Quindi ho il seguente bit di JSON e voglio estrarre il valore "$ t" sotto "token". Proseguire per il codice Go ...golang: accesso rapido ai dati delle mappe all'interno delle mappe
{
"@encoding": "iso-8859-1",
"@version": "1.0",
"service": {
"auth": {
"expiresString": {
"$t": "2013-06-12T01:15:28Z"
},
"token": {
"$t": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"expires": {
"$t": "1370999728"
},
"key": {
"$t": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
Ho il seguente frammento di codice Go che unmarshal il JSON in un'interfaccia. Quindi lavoro fino al valore "$ t" di "token". Questo approccio funziona, ma è brutto.
La mia domanda: c'è un modo più veloce per accedere a quel valore rispetto alla conversione di ogni mappa in un'interfaccia? Sono molto nuovo per andare e non sono a conoscenza di molte delle utili funzionalità di interfacce e mappe.
var f interface{}
jerr := json.Unmarshal(body, &f)
m := f.(map[string]interface{})
ser := m["service"].(map[string]interface{})
a := ser["auth"].(map[string]interface{})
tok := a["token"].(map[string]interface{})
token := tok["$t"]
fmt.Fprintf(w, "Token: %v\n", token)
Grazie in anticipo!
Molto bello . Grazie per aver incluso entrambe le versioni. – turnerd18
Prego. –