http://json-schema.org/implementations.html
https://github.com/xeipuuv/gojsonschema
深度嵌套的 JSON 数据能用 Go 直接解析出来吗?
都是要定义对应的 struct 才能解析. 可是我遇到的是嵌套的, 一个数组, 里面可能嵌入 struct, 或者另一个数组..
https://gist.github.com/visualskyrim/af21564dddaab4c1e317
https://stackoverflow.com/questions/21268000/unmarshaling-nested-json-objects
三种思路
1,定义嵌套结构体
type Foo struct {
More String json:"more"
Foo struct {
Bar string json:"bar"
Baz string json:"baz"
} json:"foo"
// FooBar string json:"foo.bar"
}
2,改写unmarshal方法
type A struct {
FooBar string // takes foo.bar
FooBaz string // takes foo.baz
More string
}
func (a *A) UnmarshalJSON(b []byte) error {
var f interface{}
json.Unmarshal(b, &f)
m := f.(map[string]interface{})
foomap := m["foo"]
v := foomap.(map[string]interface{})
a.FooBar = v["bar"].(string)
a.FooBaz = v["baz"].(string)
a.More = m["more"].(string)
return nil }
3,使用gjson
https://github.com/tidwall/gjson
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())
}