Ski*_*man 4 json marshalling go
我试图解析一个相对复杂的JSON.它有直接节点,并且它具有可变数量的元素的数组.这是一个示例:
{
status: 200,
generated: "2014-07-23T13:09:30.315Z",
copyright: "Copyright (c) 2014 Us Not You. All Rights Reserved.",
results: 1,
start: 0,
links: {
next: null,
prev: null,
self: "http://thing.com/thing.json"
},
docs: [
{
id: "thingID_001",
}
]
}
Run Code Online (Sandbox Code Playgroud)
当然是简化的.可能有零个或多个文档,每个文档都有许多节点."链接"很简单,我用正确的字段定义一个结构,然后我们去.但是文档,我无法进入元帅.这是我的代码:
import (
"net/http"
"fmt"
"io/ioutil"
"encoding/json"
)
type Thinglinks struct {
Next string
Prev string
Self string
}
//type ThingDoc struct {
// Id string
// Type string
//}
type ThingSection struct {
Status int
Generated string
Copyright string
Results int
Start int
Links thinglinks
Docs []map[string]interface{}
}
func main() {
resp, err := http.Get("http://thing.com/thing.json")
if err != nil {
fmt.Println(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
var s ThingSection
err3 := json.Unmarshal(body, &s)
if err3 == nil {
fmt.Println(s)
fmt.Println(s.Links.Self)
if len(s.Docs) >0 {
fmt.Println(s.Docs[0])
}
} else {
fmt.Println(err3)
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译并运行时,我得到除Docs之外的所有节点的预期结果,这些节点总是空集.
我强烈怀疑它是ThingSection结构的类型声明中的"Docs"定义,但我无法弄清楚该做什么.
任何帮助?
如果这是您的实际JSON,您将遇到问题.JSON需要在字段名称周围引用,如此处的语言定义所示:http://json.org/,您可能没有多余的逗号.
我在操场上有这一点,在添加引号并删除文档中的无关','之后它对我很有用.
http://play.golang.org/p/6OYeTuftfg