Hinweis: Diese Antwort wurde geschrieben, bevor die Frage bearbeitet wurde. Im original question&arr
zu json.Unmarshal()
geben wurde:
unmarshaled := json.Unmarshal([]byte(dataJson), &arr)
Sie passieren eine JSON Array unmarshal, die Adresse des arr
zu json.Unmarshal()
aber arr
kein Array (oder Scheibe), ist es ein struct Wert.
Arrays können in Go Arrays oder Slices entpackt werden. So passieren arr.Array
:
dataJson := `["1","2","3"]`
arr := JsonType{}
err := json.Unmarshal([]byte(dataJson), &arr.Array)
log.Printf("Unmarshaled: %v, error: %v", arr.Array, err)
Output (versuchen Sie es auf dem Go Playground):
2009/11/10 23:00:00 Unmarshaled: [1 2 3], error: <nil>
Natürlich Sie brauchen noch nicht einmal die JsonType
Wrapper, verwenden Sie nur eine einfache []string
Scheibe:
dataJson := `["1","2","3"]`
var s []string
err := json.Unmarshal([]byte(dataJson), &s)
Ich habe vergessen, dass ich die Adresse übergeben, und es gedacht gab das geparste Array zurück, so dass das Ergebnis war, weil es der Wert des Fehlers war, Schande über mich. –
kingSlayer
@kingSlayer Sie müssen die Adresse der Variablen übergeben, damit das 'json'-Paket direkt in Ihre Variable entpacken kann. Das Ergebnis muss nicht zurückgegeben werden, aber der optionale Fehler muss sein. – icza
Also mein Problem war, dass ich den Wert des Fehlers ausgedruckt habe und nicht den angegebenen Wert des arr.Array, das war die Verwirrung für mich, Danke. – kingSlayer