Go 語言是一種開發高性能網絡服務的編程語言。在開發過程中,我們常常遇到需要解析多層 JSON 的情況。在這篇文章中,我們將討論 Go 語言如何解析多層 JSON。
在 Go 語言中,內置有encoding/json
的標準庫,可以用來解析 JSON。
import "encoding/json" type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonString := `{"name": "Tom", "age": 18}` var person Person json.Unmarshal([]byte(jsonString), &person) fmt.Println(person.Name) }
以上是解析單層 JSON 的示例代碼。如果我們遇到多層嵌套的 JSON,可以使用 map 類型來解析。
import "encoding/json" func main() { jsonString := `{ "name": { "first": "Tom", "last": "Smith" }, "age": 18 }` var person map[string]interface{} json.Unmarshal([]byte(jsonString), &person) fmt.Println(person["name"].(map[string]interface{})["first"]) }
在以上示例代碼中,我們定義了一個 map 類型的變量,并將它傳遞給了json.Unmarshal
函數。通過斷言的方式可以訪問嵌套的元素。
當然,如果我們已經知道了 JSON 的結構,也可以使用結構體來解析。
import "encoding/json" type Name struct { First string `json:"first"` Last string `json:"last"` } type Person struct { Name Name `json:"name"` Age int `json:"age"` } func main() { jsonString := `{ "name": { "first": "Tom", "last": "Smith" }, "age": 18 }` var person Person json.Unmarshal([]byte(jsonString), &person) fmt.Println(person.Name.First) }
以上代碼中,我們定義了兩個結構體,一個用來表示 name,另一個用來表示 Person。在解析 JSON 時,我們可以將 JSON 字符串解析為一個 Person 類型的變量。
以上就是使用 Go 解析多層 JSON 的方法。