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

go json 嵌套

謝彥文1年前9瀏覽0評論

JSON是一種輕量級的數據交換格式,支持嵌套的數據結構。在Go語言中,可以使用內置的encoding/json包來處理JSON。本文將重點討論Go中的JSON嵌套問題。

首先,我們來看一個簡單的JSON嵌套示例:

{
"name": "John",
"age": 30,
"hobbies": ["reading", "running"],
"address": {
"city": "Beijing",
"street": "Xiaoyun Road"
}
}

在這個JSON數據中,有兩個嵌套的數據結構:hobbies和address。

我們可以使用Go中的struct來表示這個JSON數據:

type Person struct {
Name    string   `json:"name"`
Age     int      `json:"age"`
Hobbies []string `json:"hobbies"`
Address struct {
City   string `json:"city"`
Street string `json:"street"`
} `json:"address"`
}

在這個結構體中,我們使用了嵌套結構體Address來表示JSON中嵌套的數據結構。注意到,我們在Address的結構體定義后面加上了標簽json:"address",這是為了讓encoding/json包正確地解析JSON中的數據。

接下來,我們看一下如何將Go中的struct轉化為JSON:

p := Person{
Name: "John",
Age: 30,
Hobbies: []string{"reading", "running"},
Address: struct {
City   string `json:"city"`
Street string `json:"street"`
}{
City:   "Beijing",
Street: "Xiaoyun Road",
},
}
b, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))

使用json.Marshal函數可以將一個struct對象轉化為JSON格式的byte數組。輸出結果為:

{
"name":"John",
"age":30,
"hobbies":["reading","running"],
"address":{
"city":"Beijing",
"street":"Xiaoyun Road"
}
}

最后,我們看一下如何將JSON格式的byte數組轉化為Go中的struct:

var person Person
err := json.Unmarshal(b, &person)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", person)

使用json.Unmarshal函數將JSON格式的byte數組轉化為Go中的struct對象。輸出結果為:

{Name:John Age:30 Hobbies:[reading running] Address:{City:Beijing Street:Xiaoyun Road}}

這里需要注意的是,我們需要在json.Unmarshal函數的第二個參數中傳入一個指向struct對象的指針。同時,如果JSON中的字段名與Go中的字段名不完全一致,需要使用標簽來映射字段。

本文中簡單介紹了Go中的JSON嵌套問題,包括如何定義嵌套的struct以及如何將JSON格式的byte數組轉化為Go中的struct對象。對于更復雜的JSON數據結構,需要根據具體情況進行處理。