Go生成json、解析json和多维json数组解析

2020/08/21 12:00
阅读数 2.6W

go生成和解析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结构

// 直接解析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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部