1. 首页
  2. 主题
  3. Go问与答

GO 语言如何处理任意结构的 JSON 数据

ssqq · · 3242 次点击
现有的模块只能处理固定格式的数组,也就是可以用一个结构 sruct 描述的数据结构,这些数据是由这种结构的数据排列而成。 事实上,很多 JSON 数据结构并不是固定的,例如语法树。 ["Spp",["Rules",[["Assert","^"],["Rept",["+",["Branch",[["Rtoken","_"],["Ntoken","Spec"]]]]],["Assert","$"]]]] 大家有没有遇到过这种情况?如果遇到了,是如何解决的呢?
嘴贱问一下为什么是除了 Haskell 之外
#6
更多评论
可以通过 [gjson](https://github.com/tidwall/gjson) 来解析
#1
ssqq
快乐编程
这个模块也是用 go 自带的 json 模块扩展出来的,也是要提前知道结构或者是某个元素的值,才能获取 JSON 中的元素值。 ```go package main import "github.com/tidwall/gjson" const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}` func main() { value := gjson.Get(json, "name.last") println(value.String()) } ``` JSON 本是一种可以容纳不同数据类型的数据结构,解析成 go 语言中的对应的数据结构后,构建和遍历都应当和内容无关,所以这个模块适用范围有限。 我心目中的模块应当是: ```go import "ejson" func main() { values := ejson.Values(json) if ejson.is_array(values) { for _, v := range ejson.values(json) { println(ejson.String(v)) } } println(ejson.String(values)) } ```
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中