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

golang json asni

夏志豪2年前8瀏覽0評論

Golang 的 JSON 標準庫(Json package)提供了一系列函數來 Marshal 和 Unmarshal JSON 數據。使用 Go 的 json.Marshal 函數可以將一個值轉換成 JSON 字符串,而使用 json.Unmarshal 可以將 JSON 字符串轉換為一個值。

package main
import (
"encoding/json"
"fmt"
"log"
)
type Student struct {
Name   string   `json:"name"`
Age    int      `json:"age"`
Gender string   `json:"gender,omitempty"`
Grades []string `json:"grades"`
}
func main() {
student1 := Student{
Name: "Alice",
Age:  20,
Grades: []string{
"mathematics",
"history",
},
}
// Marshal
data, err := json.Marshal(student1)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Marshal: %s\n", data)
// Unmarshal
var student2 Student
err = json.Unmarshal(data, &student2)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Unmarshal: %+v\n", student2)
}

輸出結果為:

Marshal: {"name":"Alice","age":20,"grades":["mathematics","history"]}
Unmarshal: {Name:Alice Age:20 Gender: Grades:[mathematics history]}

除了基本的 Marshal 和 Unmarshal 函數之外,Json 庫還提供了幾個相關的函數和類型。

  • json.Decoder:支持逐步解析 JSON 數據流的類型。
  • json.Encoder:支持逐步生成 JSON 數據流的類型。
  • json.RawMessage:應用于延遲解析 JSON 數據的類型。

在 JSON 數據中,數字、字符串、布爾值和 null 值的表示方法是固定的。但是,對象和數組的表示方法是不固定的,因為它們可能包含不同的鍵值對或元素。因此,對于這些對象和數組的解析,Json 庫提供了幾個可以用來簡化編程的函數。

  • json.UnmarshalNumber:可以將字符串表示的數字轉換為 Go 的數值類型。
  • json.Unmarshaler:可以實現自定義類型的解析方式。
  • json.RawMessage:可以延遲解析 JSON 數據。