go中的json

json 是一种轻量级的数据交换格式,常常用作前后端数据交换

序列化

把go struct 序列化为Json对象,采用Marshal方法,编排序列化.

func Marshal(v interface{} )([]byte,error)

举个栗子:

type Message struct {
    Name string
    Body string
    time int64
}

使用Marshal序列化:

m := Message{"Alice", "Hello", 1294706395881547000}
b, err := json.Marshal(m) 
fmt.Println(b) //{"Name":"Alice","Body":"Hello"}

这里可以注意到,大写字母的元素,序列化之后也是大写字母,但是小写字母的并没有被序列化进来,因为在序列化的时候小写字母默认不进行序列化的.
如果序列化之后的字母不想要大写,可以采用struct tag
struct tag 可以决定marhsal和unmarshal函数如何序列化和反序列化

type MyStruct struct {
    SomeField string `json:"some_field"`
}

序列化之后也会是some_field

反序列化

反序列化unmarshal,其函数签名如下:

func Unmarshal(data []byte, v interface{}) error

如果要进行反序列化,首先需要创建一个可以接受序列化数据的Go struct :

var m Message
err := json.Unmarshal(b, &m)

同样支持嵌入式的序列化和反序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值