在Golang中,編寫處理JSON數據的代碼是很常見的。有時候,我們需要將嵌套的JSON結構壓平,以便于更方便地進行操作和處理。下面將介紹一個Golang庫提供的方法來實現這個需求。
import "github.com/xxjwxc/gopkg/json"
var jsonData = `{
"name": "Tom",
"age": 20,
"favorites": {
"color": "blue",
"fruit": "apple"
},
"books":[
{
"name": "book1",
"price": 10
},
{
"name": "book2",
"price": 20
}
]
}`
// 定義結構體
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Favorites json.MkFlat `json:"favorites"`
Books []json.MkFlat `json:"books"`
}
// 將JSON壓平后輸出
func main() {
p := &Person{}
err := json.Unmarshal([]byte(jsonData), p)
if err != nil {
fmt.Println("Json unmarshal error:", err)
return
}
fmt.Printf("%+v", p)
}
以上代碼中,我們首先引入了gopkg中的json庫,然后定義了一個包含嵌套結構的JSON字符串。我們需要將favorites和books字段的嵌套結構壓平。在結構體中,我們使用了json.MkFlat類型來代替初始的map[string]interface{}類型,這樣可以在反序列化時將其轉換為平面的JSON對象。最后,在main函數中,我們將JSON數據解碼到結構體p中并輸出。此時,輸出結果中的favorites和books即已被壓平。
上一篇HTML居中排列代碼