您好,登錄后才能下訂單哦!
Golang中怎么解析json數據,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
var jsonBlob = []byte(`[ {"Name": "Platypus", "Order": "Monotremata"}, {"Name": "Quoll", "Order": "Dasyuromorphia"} ]`) type Animal struct { Name string Order string } var animals []Animal err := json.Unmarshal(jsonBlob, &animals) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v", animals)
它可以把 json 數據的對象解析到對應的結構體中。
如果是一維數組,帶鍵值對的形式,如:{“A”:3,”B”:3,”C”:5,”D”:5},代碼如下:
func main() { jsonData := []byte(`{"A":3,"B":3,"C":5,"D":5}`) var a map[string]int json.Unmarshal(jsonData, &a) fmt.Printf("%+v\n", a) }
可見鍵值對形式的 json 可以映射到 map 中,或者 interface{}
.
如果是只有值的形式,如:[“a”,”b”,”c”,”d”,”e”],代碼如下:
func main() { jsonData := []byte(`["a","b","c","d","e"]`) var a []string json.Unmarshal(jsonData, &a) fmt.Printf("%+v\n", a) }
可見只有值的形式可以映射到一個 slice 中。
關于 json 數據解析對于類型,在函數注釋中都已有說明:
To unmarshal JSON into an interface value,Unmarshal stores one of these in the interface value:
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
模擬 PHP 的 json_decode($jsonString, true)
函數
但是,看這種情況,在 PHP 中,如果用 json_decode(‘[“a”,”b”,”c”,”d”,”e”]', true)
這種第二個參數是 true 的解析 json,可以解析為帶鍵值對的對象的形式:
[ 0=>"a", 1=>"b", 2=>"c", 3=>"d", 4=>"e" ]
這種 Golang 怎么做到呢?
func main() { jsonData := []byte(`["a","b","c","d","e"]`) var a []string json.Unmarshal(jsonData, &a) newData := make(map[int]string) for k, v := range a { newData[k] = v } fmt.Printf("%+v\n", newData) }
關于Golang中怎么解析json數據問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。