Go語言中的JSON解析器是golang自帶的,并且支持將JSON數據轉換為go語言中的數據結構。通常,我們需要將JSON數據轉換為結構體或者map類型。
type Person struct { Name string `json:"name"` Age int `json:"age"` } jsonStr := `{"name":"Tom","age":18}` var person Person err := json.Unmarshal([]byte(jsonStr), &person) if err!=nil { fmt.Println("解析失敗") } fmt.Println(person.Name, person.Age)
以上是將JSON數據轉換為結構體的例子,解析過程中涉及到以下三步:
1.將JSON字符串解析為一個json.Token類型的token流。
2.根據token流構建出一個go類型的值。
3.將json.Token類型的值映射到對應的go類型的值上。
下面是json解析的原理示意圖:
+-------+ | JSON | | String| +-------+ | v +-------+ +----------------+ +-----------+ | | json.Unmarshal | | | json.Token| | 原始<-------------------| JSON解析器<----| Stream | | JSON | | | +-----------+ | String| +----------------+ | | +-------+ +----------------+ | | | Go類型 | | 值(map、 | | 結構體類型等) | | | +----------------+
JSON解析器通過將JSON字符串轉換為Token類型的Stream流,逐個分析token對象的類型, 同時通過遞歸調用自身或者下一層JSON解析器能夠構造出對應的go類型對象。
上一篇html左下角小窗口代碼
下一篇python 指數表示