2016-11-11 157 views
0

我正在使用this JSON解析器從我從API獲取的JSON響應中提取數據。它返回一個包含數據,當字節數組轉換爲字符串,並打印一個字節數組,我得到下面的輸出:如何將字符串轉換爲JSON並將數據保存到數組中?

[{"Name": "Vikings", "Type": "show"}, 
    {"Name": "Spartacus: Gods Of The Arena", "Type": "show"}, 
    {"Name": "True Detective", "Type": "show"}, 
    {"Name": "The Borgias", "Type": "show"}, 
    {"Name": "Se7en", "Type": "movie"}] 

因爲這是一個普通的字符串,我沒有數據maniuplating到的方式提取我需要的東西。理想情況下,我想有這樣的數組:

shows := ["Vikings", "Spartacus: Gods Of The Arena"...] 
    movies := ["Se7en", "other data", ...] 

我想用這些陣列做的就是給基於該類型用戶的標題(即:節目,電影等),他/她要求。所以基本上我正在尋找的是一種將字符串轉換爲我可以輕鬆操作(並可能篩選)的方法。

如果這似乎是一個奇怪的做法,但我想不出有任何其他的方式。我覺得Go的語法和做事方式與Javascript等另一種語言相比非常傳統,我可以很容易地在一行或兩行中做到這一點。

回答

2

使用標準encoding/json包到數據解組爲相匹配的數據的形狀的值:通過取消封送物品

var items []struct { // Use slice for JSON array, struct for JSON object 
    Name string  
    Type string   
} 
if err := json.Unmarshal(d, &items); err != nil { 
    log.Fatal(err) 
} 

循環尋找節目和電影:

var shows, movies []string 
for _, item := range items { 
    switch item.Type { 
    case "movie": 
     movies = append(movies, item.Name) 
    case "show": 
     shows = append(shows, item.Name) 
    } 
} 

playground example

+0

我試過,但問題是,JSON是嵌套的,我想要的數據是在其他對象內。我使用的另一個解析器解決了這個問題,但迫使我使用字符串。無論如何,我通過迭代字符串並使用其索引操作它來解決問題。雖然謝謝! – ninesalt

相關問題