Go/文本操作/Json

#Json编码解码


package main

import (
	"encoding/json"
	"fmt"
)

//通过结构体生成json串,结构体成员名首字母必须大写
type Stu struct{
	Name string //`json:"-"`		//不会打印到屏幕
	Age int `json:"age"`		//二次编码,json串里,key为"age"
	Course []string
	Grade byte
	Flg bool `json:",string"`  //转为字符串"true"
}

func main() {
	//json编码
	//通过结构体生成json
	s := Stu{"Amy",18,[]string{"math","english"},'A',true}
	slice,err := json.Marshal(s)
	if nil == err{
		fmt.Println(string(slice))
	}
	slice,err = json.MarshalIndent(s,"","		")
	if nil == err{
		fmt.Println(string(slice))
	}
	//通过map生成json
	m := make(map[string]interface{})
	m["name"] = "Tom"
	m["age"] = 18
	m["Course"] = []string{"math","english"}
	slice,err = json.Marshal(s)
	if nil == err{
		fmt.Println(string(slice))
	}

	//json解码
	jstr := `
{
		"Name": "Amy",
		"age": 18,
		"Course": [
				"math",
				"english"
		],
		"Grade": 65,
		"Flg": "true"
}
`	//原始字符串

	//解析json到结构体
	var st Stu
	err = json.Unmarshal([]byte(jstr),&st)
	if err == nil{
		fmt.Println(st)
	}

	//解析json到map

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值