JSON

go数据和json格式数据之间的转换

字号+ 作者:H5之家 来源:H5之家 2017-11-08 08:02 我要评论( )

go数据和json格式数据之间的转换 go有一个官方包来操作json格式的数据,包位于encoding/json。 JSON编码 func Marshal(v interface{}) ([]byte, error) 返回用JSON编码v之后的值。 类型转换规则: boolean值会编码成JSON的boolean; float,integer会编码成JSO

go数据和json格式数据之间的转换

go有一个官方包来操作json格式的数据,包位于encoding/json。

 

JSON编码

 

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

返回用JSON编码v之后的值。

 

类型转换规则:

  • boolean值会编码成JSON的boolean;

  • float,integer会编码成JSON的number;

  • string值会编码成UTF-8JSON字符串,无效的字节用Unicode替换,"<"和">"编码成"\u003c" and "\u003e","&"编码成"\u0026";

  • array和slice会编码成JSON array,[]byte编码成base64字符串,空的slice编码成null;

  • struct会编码成JSON object。

  •  

    空值是指false,0,空指针或者空interface,任何长度为0的array,slice,map或者string。

    json对象默认的key字符串是strut的字段名,也可以自己指定名字,方法是在每个字段最后用“json”标签指定名字:

    比如:

    把上面的struct编码成json字符串时,Name字段的key是new,而不是Name。

    "json"标签的用法:

    1、`json:"-"`:编码的时候会忽略这个字段。

    2、`json:"newName"`:指定字段在JSON字符串的key名字。

    3、`json:"newName,omitempty"`:如果这个字段是空值,则不编码到JSON里面,否则用newName为名字编码。

    4、`json:",omitempty"`:同上,不为空的话,这个字段的key还是用默认的struct字段名。

    5、`json:",string"`:编码成字符串,这个string选项只适用字符串,浮点型和整型数据。

    struct字段需要可导出才能编码成json,否则会忽略。 

     

    json解码

     

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

    从data解码JSON,结果存放在v,所以v参数需要引用传递参数。

     

    转换规则和Marshal的规则相反。

    还有其他一些规则:

  • 如果是解析到一个指针,Unmarshal首先会检查是否是json字符null,如果是的话指针会设置为nil,其他情况Unmarshal会把值填充到指针所指的位置,如果是一个空指针则会分配一个新的位置。

  • 如果是解析到struct,Unmarshal会用struct的字段名或者`json`标签指定的名字和json的key相匹配。

  • 如果是解析到interface值,转化规则如下:

  • bool对应JSON的boolean,

  • float64对应JSON的number,

  • string对应JSON的string,

  • []interface{}对应JSON的array

  • map[string]interface{}对应JSON的object

  • nil对应JSON的null。

  • 如果一个JSON值没有适用的给定类型,或者JSON的数值超过了目标类型的范围,Unmarshal会跳过这个字段或者尽可能的解码。

  •     

    本文转自:Sharks 非本站原创 如果侵犯了您的权力 请Email:13612963@qq.com 告知

  • 上一篇:Xcode6编译SDWebImage报错解决方法(SDWeb…
  • 下一篇:Go的Error - 错误即值 (Errors are valu…
  • 相关文章

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • android开发实现天气情况的获取(Json来返回数据)

      android开发实现天气情况的获取(Json来返回数据)

      2017-11-07 12:00

    • php针对json操作:json

      php针对json操作:json

      2017-11-07 12:00

    • C++json解析库

      C++json解析库

      2017-11-06 13:06

    • JSONJSON学习入门(了解什么是JSON)

      JSONJSON学习入门(了解什么是JSON)

      2017-11-05 16:01

    网友点评