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

gosn解析json

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

Golang語言是一種強類型、并發安全的編程語言,同時它支持解析JSON數據格式。Go語言的標準庫中已經包含了解析JSON的包,稱為encoding/json包。下面我們將詳細介紹如何使用Go語言解析JSON數據。

package main
import (
"encoding/json"
"fmt"
"log"
)
type person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
jsonStr := `{
"name": "張三",
"age": 20
}`
var p person
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
log.Fatal(err)
}
fmt.Println(p.Name) // output: 張三
fmt.Println(p.Age) // output: 20
}

在上面的代碼中,我們定義了一個person對象,并給它添加了json標簽。這些標簽指定了JSON數據和person對象屬性之間的對應關系。接下來我們使用json.Unmarshal函數將JSON數據解析為person對象。

除了上面的例子,Go語言的encoding/json包還提供了另外兩個非常有用的函數:Marshal和NewDecoder。

package main
import (
"encoding/json"
"fmt"
"log"
"strings"
)
type person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
p := person{
Name: "張三",
Age:  20,
}
// 將person對象編碼為JSON格式數據
jsonBytes, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
fmt.Println(strings.TrimSpace(string(jsonBytes))) // output: {"name":"張三","age":20}
// 解碼JSON格式數據到person對象
newP := person{}
d := json.NewDecoder(strings.NewReader(string(jsonBytes)))
if err := d.Decode(&newP); err != nil {
log.Fatal(err)
}
fmt.Println(newP.Name) // output: 張三
fmt.Println(newP.Age) // output: 20
}

在上面的例子中,我們首先將person對象編碼為JSON格式數據,然后使用json.NewDecoder函數將JSON格式數據解碼回person對象。這種方法避免了使用Unmarshal函數時需要先將JSON數據讀入到內存中的問題。

上一篇c json reader