go語言json解析標準庫encoding/json

 閱讀大約需要1分鐘

go語言json解析標準庫encoding/json

使用示例如下:

package main

import (
	"encoding/json"
	"fmt"
)

type People interface {
	getName() string
}

type Student struct {
	Name string
	Age  int
}

func (c *Student) getName() string {
	return c.Name
}

func main() {
	// struct to json
	var p People = &Student{
		Name: "John",
		Age:  12,
	}
	structJson, err := json.Marshal(p)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("struct to json", string(structJson))

	//map to json
	stuMap := make(map[string]any)
	stuMap["John"] = 12
	stuMap["Tom"] = 13
	mapJson, err := json.Marshal(stuMap)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("map to json", string(mapJson))

	// json to struct
	jsonStr := "{\"Name\":\"John\",\"Age\":12}"
	var p1 People = new(Student)
	err1 := json.Unmarshal([]byte(jsonStr), p1)
	if err1 != nil {
		fmt.Println(err1)
		return
	}
	fmt.Printf("json to struct: %#v\n", p1)

	//json to map
	personMap := map[string]any{}
	err2 := json.Unmarshal([]byte(jsonStr), &personMap)
	if err2 != nil {
		fmt.Println(err2)
		return
	}
	fmt.Printf("json to map: %v\n", personMap)
}