JSON의 상대적으로 복잡한 비트를 구문 분석하려고합니다. 그것은 직접적인 노드를 가지며 가변 개수의 요소를 가진 배열을가집니다. 다음은 샘플입니다.GO에 구조체 정의의 일부로 배열을 포함하려면 어떻게해야합니까?
{
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",
}
]
}
간체, 물론. 각 노드에는 여러 개의 노드가있는 문서는 0 개 이상있을 수 있습니다. "링크"는 쉽고, 올바른 필드가있는 구조체를 정의하면 거기에 있습니다. 하지만 워드 프로세서, 나는 보안관에게 갈 수 없다. 여기 내 코드입니다 :
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)
}
}
내가 컴파일하고
난 항상 빈 세트입니다 문서를 제외한 모든 노드에 대한 내 예상 결과를 얻을 실행됩니다.ThingSection 구조체에 대한 형식 선언에 "문서"정의가 있다고 생각되지만 그 부분에서 수행 할 작업을 파악하지 못했습니다.
어떤 도움이 필요합니까?
, 나는이 시도 : http://play.golang.org/p/sQCBq9RIYa. 문서 배열이 비어 있지 않았습니다. –
재미 있습니다. JSON을 코드에 넣으면 실제로 작동합니다. 아마도 내가 여기서 그걸 복사하는데 이상한 것을했을 것입니다. 지금 조사 중입니다. –
알림'id : "thingID_001"뒤에 쉼표를 지워야했습니다. 작동하지 않고 jsonlint가 잘못된 JSON으로 표시했습니다. 그것은 관련 될 수 있습니다. –