色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang json解析原理

林國瑞2年前11瀏覽0評論

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類型對象。