in JSON-Antwort verschachtelt ist Ich versuche, mit dem Flickr-API zu arbeiten, und ich habe einen Endpunkt, die mir eine Antwort wie dieseAbstellungs gibt mir nur die erste Element des Array, die
{
"photos": {
"page": 1,
"pages": 500,
"perpage": 1,
"total": 500,
"photo": [
{
"id": "12345",
"owner": "[email protected]",
"secret": "12ab345xyz",
"server": "1234",
"farm": 1,
"title": "Some Title",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0
},
...
]
},
"stat": "ok"
}
ich eine Struktur haben gibt, dass sieht aus wie dieses
type FlickrResp struct {
Photos struct {
Page int `json:"page"` //what page the results were retreived from
Pages int `json:"pages"` //total number of pages of results
Perpage int `json:"perpage"` //number of results per page
Total int `json:"total"` //total number of results
Photo []struct {
ID string `json:"id"` //image ID
Owner string `json:"owner"` //owner ID
Secret string `json:"secret"` //owner secret
Server string `json:"server"` //server ID
Farm int `json:"farm"` //farm ID
Title string `json:"title"` //image title
Ispublic string `json:"ispublic"` //is image publicly viewable?
Isfriend string `json:"isfriend"` //is image owner my friend?
Isfamily string `json:"isfamily"` //is image owner my family?
} `json:"photo"` //array of objects with details of photos
} `json:"photos"` //object that holds information about photoset
Stat string `json:"stat"` //status
}
und ich versuche, von a bis Abstellungs thusly
var fr FlickrResp //create blank struct of type FlickrResp to hold JSON
resp, err := ioutil.ReadAll(flickrCB.Body) //read HTTP GET response
if err != nil {
}
json.Unmarshal([]byte(resp), &fr) //serialize JSON into template
flickCB.Body kommt n http.Get
Das Problem ist, dass ich nur das erste Element des Foto-Array bekomme. Ich kann sehen, dass ich mehr als ein Element habe, wenn ich das Antwortobjekt als String ausdrucke. Was mache ich falsch? Ich habe mir schon seit ein paar Tagen den Kopf gegen Unmarshal und kompliziertere JSON-Antworten geschlagen.
Liest du den Fehler von 'json.Unmarshal'? Wenn ich das obige versuche, bekomme ich ein Problem mit der Typabweichung zwischen 'ispublic', 'isfriend' und 'isfamily' im Vergleich zu den Strings, die die Struktur erwartet. Wenn ich die Typen ändere, scheint es in Ordnung zu sein. Hier ist ein Beispiel mit der Änderung, einschließlich der Verwendung für ein Feld von 'json.Number', was in solchen Fällen nützlich sein kann - https://play.golang.org/p/4fE_MkxgxS. Ich sehe zwei Einträge in 'Foto' in den Ergebnissen. – Bubbles
Das ist es, danke. Ich möchte nicht darüber reden, wie oft ich darüber gegangen bin. –