在進(jìn)行Go語(yǔ)言的JSON解析時(shí),常會(huì)遇到多層級(jí)的JSON數(shù)據(jù)。本文將介紹如何使用Go語(yǔ)言對(duì)多層級(jí)的JSON進(jìn)行解析。
Go語(yǔ)言提供了標(biāo)準(zhǔn)庫(kù)`encoding/json`來(lái)解析JSON數(shù)據(jù)。首先,我們需要定義一個(gè)結(jié)構(gòu)體來(lái)存儲(chǔ)JSON數(shù)據(jù)。假設(shè)我們有如下JSON數(shù)據(jù):
{ "name": "John", "age": 30, "addresses": [ {"city": "New York", "street": "Broadway"}, {"city": "London", "street": "Baker Street"} ] }
我們可以定義一個(gè)結(jié)構(gòu)體來(lái)表示上述JSON數(shù)據(jù):
type Person struct { Name string Age int Addresses []Address } type Address struct { City string Street string }
Person結(jié)構(gòu)體中包含一個(gè)字符串類(lèi)型的Name和一個(gè)整型的Age,以及一個(gè)[]Address類(lèi)型的Addresses。Address結(jié)構(gòu)體中包含一個(gè)字符串類(lèi)型的City和一個(gè)字符串類(lèi)型的Street。
接著,我們可以使用`json.Unmarshal()`函數(shù)將JSON數(shù)據(jù)解析到Person結(jié)構(gòu)體中:
jsonStr := `{ "name": "John", "age": 30, "addresses": [ {"city": "New York", "street": "Broadway"}, {"city": "London", "street": "Baker Street"} ] }` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { log.Fatal(err) } fmt.Println(person.Name) // "John" fmt.Println(person.Age) // 30 fmt.Println(person.Addresses[0].City) // "New York" fmt.Println(person.Addresses[0].Street) // "Broadway"
通過(guò)調(diào)用`json.Unmarshal()`函數(shù),我們將JSON數(shù)據(jù)解析到Person結(jié)構(gòu)體中,并輸出結(jié)果。可以看到,我們成功地解析了多層級(jí)的JSON數(shù)據(jù)。