目录
- 背景
- 原有方式
- 转化为 map[string]interface
- 预定义结构体 struct
- 推荐: GJSON 处理
- 总结
背景
作为一种强数据类型的语言, Golang 对 json 的处理很麻烦。已知 json 的数据类型有:
- 字符串
- 数字
- 数组
- 字典
- 上述类型的嵌套
如果是弱数据类型的语言,例如 js , Python等,不需要考虑类型就直接可以使用。
原有方式
对 json 的处理分为编码和解码。 编码是把已有的数据对象转为 json 对象, 解码反之。
Golang 对编码比较好处理,直接把数据对象放到原生的 json.Marshal() 函数中即可返回字节数组。但对于解码来说,就比较复杂了。
转化为 map[string]interface
golang 中的 interface 相当于 Java 中的 Object, 什么都可以往里面放,但放进去方便就意味着取出来很麻烦。
例如想要从这个 json 字符串中取出 float64 类型的 数学成绩,需要不断的做类型转换和map取值判断,非常复杂。
预定义结构体 struct
预先定义一个结构体,让内置的解码函数来做属性映射, 比上面一种方法方便和常见很多,但是需要预先知道数据的详细结构,不然没法定义出来这个结构体。
推荐: GJSON 处理
- 软性返回,也就是数据类型如果对不上会返回对应的零值,而非 err 或者 panic , 所以不需要一定要预先知道原始类型。
- 提供多种数据类型和对应的 IsXXX() 判断函数,来辅助解决上面的零值问题
- 路径解析方便, 通过像弱数据类型语言一样 . 语法来做解析,极大的简化了 json 的解码问题。
总结
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)