Go生成json、解析json和多維json數組解析

go生成和解析json結構是按結構體模式解析的,因此結構體類型必定要多練習熟悉。golang

完整代碼(能夠運行):json

// +build ignore
package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string
	Age  int
}

type Family struct {
    Persons []Person
}

func main() {
	// 根據結構體生成json
	manJson := Person{
		Name: "Elinx",
		Age:  26,
	}
	man, _ := json.Marshal(manJson)
	fmt.Println(string(man))

	// 解析json到結構體
	jsonStr := []byte(`{"Name":"Elinx","Age":26}`)
	var man2 Person
	json.Unmarshal(jsonStr, &man2)
	fmt.Println(man2)

	// 解析json數組到切片(數組)
	jsonArrStr := []byte(`[{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}]`)
	var jsonSlice []map[string]interface{}

	json.Unmarshal(jsonArrStr, &jsonSlice)
	fmt.Println(jsonSlice)

	// 解析多維數組
	var f Family

    // 模擬傳輸的Json數據
    familyJSON := `{"Persons": [{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}] }`
	
	fmt.Println("======================")

    // 解析字符串爲Json
	json.Unmarshal([]byte(familyJSON), &f)
	// 直接輸出並不會展現所有層級,緣由待考究
	fmt.Println(f)
	// 重新生成json字符串查看真實結構
	jsons, _ := json.Marshal(f)

	fmt.Println(string(jsons))
}

直接解析單鍵json數組

能夠使用直接json轉map結構ui

// 直接解析json單key結構,不使用結構體
uploadJSON := `{"xxxx": "test","zzzz": "1111111"}`
var jsonSlice2 map[string]interface{}
json.Unmarshal([]byte(uploadJSON), &jsonSlice2)
fmt.Println(jsonSlice2)

參考文獻

1.go json字符串轉切片
2.golang生成JSON及解析JSON
spa

相關文章
相關標籤/搜索