golang关于json的处理

原创
2018/07/20 16:16
阅读数 614

#golang关于json的处理

##内置序列化和反序列化函数

func Marshal(v  interface{}) ([]byte, error)
	把v对象转为json对象,返回[]byte类型的json内容
func Unmarshal(data [] byte, v interface{}) error
	把json数据data转为v类型的对象

##tips 结构体中必须是大写字符开头的才能被转为json和接收json转换的结果 可以在结构体中自己设置对应json的key的名字,如:

type T struct{
    Aa int    `json:keynamea`
    Bb string `json:keynameb`
}

##类型的对应

json golang
json golang
布尔型 布尔型
数字 浮点型、整型【json转为golang对象,没有指定类型时会转为浮点型】
字符串unicode 字符串utf-8【从golang对象转为json时,特殊字符会被转义成为如\u003c('<')的unicode字符】
数组 数组、切片【从golang对象转为json时,[]byte会被转为base64编码后的字符串,slice的零值nil会转为null】【json转为golang对象,没有指定类型时会默认转为[]interface{}对象】
json对象 结构体、map[string]T(T可以为任何符合转换规则的类型)【json转为golang对象,没有指定结构体还是map时会默认转为map[string]interface{}对象】
null nil【golang中可以赋值为nil的有:接口、数组、切片、指针、map对象】

注:golang中的其他类型不被支持转换

##自定义转换 由于golang中不是所有类型都支持json转换,或者自己想定义转换规则,那么可以通过实现Marshal和Unmarshal两个函数来自定义。具体如何实现请参照golang语法。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部