Golang是一種很受歡迎的編程語言,它可作為構建可靠、高效及可擴展的應用程序的利器。當今的web開發離不開對JSON的處理,但JSON數據格式并不總是固定的,其中有時會有嵌套的參數。接下來,我們將討論如何使用Golang來解析深層Json數據。
package main import ( "encoding/json" "fmt" ) func main() { jsonData := []byte(` { "name": { "first": "John", "last": "Doe" }, "age": 25, "address": { "street": "101 Main St.", "city": "Anytown", "state": "CA", "zip": 12345 } } `) var parsedData map[string]interface{} err := json.Unmarshal(jsonData, &parsedData) if err != nil { panic(err) } name, ok := parsedData["name"].(map[string]interface{}) if ok { fmt.Println("First Name:", name["first"]) fmt.Println("Last Name:", name["last"]) } age, ok := parsedData["age"].(float64) if ok { fmt.Println("Age:", age) } address, ok := parsedData["address"].(map[string]interface{}) if ok { fmt.Println("Street:", address["street"]) fmt.Println("City:", address["city"]) fmt.Println("State:", address["state"]) fmt.Println("Zip:", address["zip"]) } }
以上代碼的效果應該是:
First Name: John Last Name: Doe Age: 25 Street: 101 Main St. City: Anytown State: CA Zip: 12345
我們首先將JSON數據讓JSON解碼器處理,將結果保存在一個map[string]interface{}類型的變量中。 然后,使用類型斷言在這個map中查找每個鍵,這樣就能訪問嵌套對象內的值了。 但是,使用類型斷言來按索引訪問JSON結構深處的數據很繁瑣。 有一種更好的方法是使用gojsonq,它是一個用于解析JSON的輕量級庫。