Go語言(Golang)是一種強類型、高效、可靠的編程語言,由谷歌公司開發,常被用于構建網絡服務和分布式系統。在Golang中,JSON是一種常用的數據格式。在這篇文章中,我們將了解如何解析不固定的JSON。
在Golang中,使用json.Unmarshal函數可以將JSON字符串解析成Go語言的數據結構。但是對于不固定的JSON,我們該如何解析呢?不固定的JSON是指每個元素的鍵(key)都不相同的JSON數據。
一個示例的不固定JSON如下所示:
{ "person1": { "name": "Alice", "age": 20 }, "person2": { "name": "Bob", "age": 30 } }
這個JSON數據包含兩個person對象,每個對象都有不同的鍵。為了解析這個JSON,我們需要先定義一個Go結構體來存儲數據。一個可能的結構體如下所示:
type Person struct { Name string `json:"name"` Age int `json:"age"` }
有了這個結構體,我們還需要定義一個包含所有person對象的結構體:
type People struct { Persons map[string]Person `json:",inline"` }
注意到我們使用map[string]Person來存儲所有的person對象。這樣我們就可以使用json.Unmarshal函數解析JSON了:
func main() { jsonStr := `{ "person1": { "name": "Alice", "age": 20 }, "person2": { "name": "Bob", "age": 30 } }` var people People err := json.Unmarshal([]byte(jsonStr), &people) if err != nil { panic(err) } for key, person := range people.Persons { fmt.Println(key, person.Name, person.Age) } }
在這個示例程序中,我們首先定義了一個JSON字符串,然后解析出People結構體。我們還用了一個循環語句輸出了每個person對象的鍵(key)、名字(name)和年齡(age)。
總之,解析不固定JSON可以使用map來存儲所有的對象。我們只需要定義一個帶有map的結構體即可。然后使用json.Unmarshal函數解析JSON字符串,就可以得到我們想要的數據結構了。
上一篇go port json
下一篇python 搜索列表內