2016-10-29 13 views
-1

Ich versuche, Json in this URL zu parsen. Mein Code ist wie folgt, aber die Ausgabe ist nicht wie erwartet. Ich möchte ID, URL in Payload nur für Pushevent extrahieren. Wie mache ich das . DankJson Parsing in gehen

type events struct { 
    id string `json:"id"` 
} 

func pullUrlFromGit(urlHolder chan string){ 

    client := &http.Client{} 
    resp, _ := client.Get("https://api.github.com/events") 
    defer resp.Body.Close() 
    body,_ := ioutil.ReadAll(resp.Body) 

    var gtevents []events 
    json.Unmarshal(body,&gtevents) 

    log.Printf("%+v",gtevents) 
} 

Der Ausgang ich bin immer ist als unten.

[{id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:} {id:}] 

Antwort

3

Machen id Feld Groß

type events struct { 
    Id string `json:"id"` 
} 

Go json Bibliothek verwendet Reflektion von Strukturen für den Zugriff auf Felder. Mit Reflection können nur exportierte Felder geändert werden. Daher müssen Sie dieses Feld exportieren, indem Sie den ersten Großbuchstaben eingeben.

Siehe Laws of Reflection

+0

thanks..you recht – TheLion

+0

Nur eine Follow-up Frage. ich die Ausgabe wie unten bekam, wenn ich Typ und Paylod hinzugefügt {ID: 4787366250 Art: IssueCommentEvent Nutzlast: {Größe: 0}} {ID: 4787366249 Art: PushEvent Nutzlast: {Größe: 1}} Gibt es Art und Weise zu filtern Geben Sie das Struct selbst ein? Was ich meinte war, kann ich das unter Ereignisse vom Typ struct { \t Id String 'json: "id"' \t Typ String 'json: "type": "PushEvent"' \t Payload eventPayload 'json:“ Payload "' } Überprüfen, ob der Typ PushEvent ist – TheLion