色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang json嵌套

林國瑞2年前9瀏覽0評論

Golang是一門高效、可擴展的編程語言,特別適用于網絡編程。在golang中,處理json數據非常方便,可以使用json包直接讀寫json數據。不過,在實際應用中,我們經常需要處理嵌套的json數據,這時候就需要使用golang json嵌套來方便地進行操作。

對于簡單的json數據,我們可以直接使用Unmarshal函數將json數據解析成結構體或Map。例如:

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
str := `{"name":"Tom", "age": 18}`
var p Person
json.Unmarshal([]byte(str), &p)
fmt.Println(p)

但對于嵌套的json數據,結構體定義就變得復雜,而且嵌套的json數據可能出現在任何位置。因此,我們可以使用interface{}類型來處理嵌套的json數據。

首先,我們需要將json數據解析為Map類型:

str := `{
"name": "Tom",
"address": {
"city": "Beijing",
"street": "Street 123"
},
"scores": [98, 86, 94],
"friends": [
{"name": "Jerry", "age": 20},
{"name": "Lucy", "age": 19}
]
}`
var m map[string]interface{}
json.Unmarshal([]byte(str), &m)

然后,我們就可以通過Map操作來處理嵌套的json數據:

name := m["name"].(string)
fmt.Println("Name:", name)
address := m["address"].(map[string]interface{})
city := address["city"].(string)
fmt.Println("City:", city)
scores := m["scores"].([]interface{})
fmt.Println("Scores:", scores)
friends := m["friends"].([]interface{})
for _, f := range friends {
friend := f.(map[string]interface{})
name := friend["name"].(string)
age := friend["age"].(float64)
fmt.Println("Friend:", name, age)
}

在使用interface{}類型處理嵌套的json數據時,一定要注意類型轉換的問題,以避免出現運行時錯誤。