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

ssqq · · 2459 次点击
ssqq
快乐编程
这样确实能处理通用结构的JSON,不过GO处理嵌套的数据结构确实是很麻烦。这是除 Haskell 之外所有静态类型,编译型语言的短板。
#5
更多评论
可以通过 [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