最近在開發一個web應用程序,需要使用golang來處理JSON數據。我的數據結構是一個嵌套的二維數組,其中每個數組元素都是一個JSON對象。在處理這種多層JSON數據時,我發現golang提供了許多有用的工具來解析和操作JSON。
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address struct {
Street string `json:"street"`
City string `json:"city"`
} `json:"address"`
}
var people []Person
jsonStr := `
{
"people": [
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anywhere"
}
},
{
"name": "Jane",
"age": 25,
"address": {
"street": "456 Elm St",
"city": "Somewhere"
}
}
]
}
`
err := json.Unmarshal([]byte(jsonStr), &people)
if err != nil {
log.Fatal(err)
}
for _, person := range people {
fmt.Printf("Name: %s\nAge: %d\nStreet: %s\nCity: %s\n\n", person.Name, person.Age, person.Address.Street, person.Address.City)
}
以上代碼是一個簡單的例子,在這個例子中,我們定義了一個包含三個字段的Person結構體,它們都與JSON對象的鍵相對應。第三個字段Address是另一個嵌套的JSON對象,它包含兩個鍵(Street和City)。
我們使用json.Unmarshal方法將JSON字符串解析為一個Person數組。json.Unmarshal返回一個錯誤對象,如果出現錯誤,則需要進行檢查。在這個例子中,我們簡單地使用了log.Fatal方法來輸出錯誤并退出程序。
最后,我們遍歷了People數組并打印出每個Person對象的字段。對于Address字段,我們使用了點操作符(.)來訪問它的Street和City子字段。