2016-03-31 13 views
1

eingehenden String ist:golang, Wie kann man json arrays Elemente in simplejson dekodieren?

 {"status_list":[ 
     {"m_id":70,"m_status":"OK","m_status_code":200,"reported":false}, 
     {"m_id":71,"m_status":"Send Message Over Time","m_status_code":800,"reported":false}, 
     {"m_id":72,"m_status":"OK","m_status_code":200,"reported":false}, 
     {"m_id":73,"m_status":"OK","m_status_code":200,"reported":false} 
     ] 
     } 

Wie die letzte Status' M_STATUS bekommen?

Die Art und Weise ich verwende ist

import github.com/bitly/go-simplejson" 

.... 
jsonRequest, _ := simplejson.NewJson([]byte(incommingString)) 
mArray := jsonRequest.Get("status_list").BustArray() 
mItem := mArray[3] 
fmt.printf("mItem: %") 
m3StatusCode := mItem["m_status_code"] //<---<< Can't compile 

Ich habe:

invalid operation: mItem["m_status_code"] (type interface {} does not support indexing) 

Wenn ich letzte Zeile Code zu entfernen. Ich kann MITEM drucken als

mItem: : map[m_id:73 m_status:OK m_status_code:200 reported:%!s(bool=false)] 

FRAGE: Wie kann ich m_status_code Wert holen?

+0

Die Zeile 'mArray: = jsonRequest.Get (" status_list "). BustArray()' sollte '.MustArray()' sein, oder? – perelin

Antwort

2

Zuerst müssen Sie einen type assertion machen.

m, ok := mItem.(map[string]interface{}) 
if(!ok){ 
    fmt.Println("Invalide data") 
} 

fmt.Println(m["m_status_code"]) 

Dies ist, weil mItem ist eigentlich keine Karte. Es ist ein interface{}. simplejsons MustArray gibt []interface{} zurück.

Sie müssen also bestätigen, dass der in mItem gespeicherte Wert von einem Typ ist, den Sie mit einem Index m_status_code aktivieren können.

+0

Vielen Dank! Aber wenn ich es ausdrucke, habe ich:%! D (json.Number = 200) wie man es in int dekodiert? –

+0

Ich habe es! Es ist eine Zeichenfolge. noch nicht int. Wenn ich% s in fmt.Printf() verwende, ist das in Ordnung. Ich habe 200. –

+0

Froh, dass es funktioniert hat. Ich suche nach einem einfacheren Weg. Ich werde die Antwort bearbeiten, wenn ich etwas gefunden habe. –

Verwandte Themen