Verschachteltes JSON reduzieren
Sie haben eine verschachtelte JSON-Antwort und möchten diese auf eine einzige Ebene reduzieren, um den verschachtelten Facebook-Typ zu eliminieren . Um dies zu erreichen, können Sie eine benutzerdefinierte UnmarshalJSON-Funktion verwenden. Eine einfachere und flexiblere Lösung ist jedoch die Verwendung einer Abflachungsfunktion.
Benutzerdefinierte Abflachungsfunktion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code class = "go" >
func Flatten(m map[string] interface {}) map[string] interface {} {
o := make(map[string] interface {})
for k, v := range m {
switch child := v.(type) {
case map[string] interface {}:
nm := Flatten(child)
for nk, nv := range nm {
o[k+ "." +nk] = nv
}
default :
o[k] = v
}
}
return o
}</code>
|
Nach dem Login kopieren
Verwenden der Abflachungsfunktion< /h3>
In Ihrem Go-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code class = "go" > var jsonBlob = []byte(`[
{ "StumbleUpon" :0, "Reddit" :0, "Facebook" :{ "commentsbox_count" :4691, "click_count" :0, "total_count" :298686, "comment_count" :38955, "like_count" :82902, "share_count" :176829}, "Delicious" :0, "GooglePlusOne" :275234, "Buzz" :0, "Twitter" :7346788, "Diggs" :0, "Pinterest" :40982, "LinkedIn" :0}
]`)
var social []Social
err := json.Unmarshal(jsonBlob, &social)
if err != nil {
fmt.Println( "error:" , err)
}
for _, s := range social {
socialMap := Flatten(s)
fmt.Printf( "%+v\n" , socialMap)
}</code>
|
Nach dem Login kopieren
Beispielausgabe
Mit der abgeflachten Social-Map erhalten Sie:
1 | map[StumbleUpon:0 Reddit:0 Facebook.commentsbox_count:4691 Facebook.click_count:0 Facebook.total_count:298686 Delicious:0 GooglePlusOne:275234 Buzz:0 LinkedIn:0 Facebook.comment_count:38955 Facebook.like_count:82902 Facebook.share_count:176829 Twitter:7346788 Diggs:0 Pinterest:40982]
|
Nach dem Login kopieren
Diese Ausgabe zeigt die abgeflachte Social-Map mit allen Facebook-Feldern, die als „Facebook...“ zugänglich sind.
Dieser Ansatz bietet eine generische Möglichkeit, JSON-Antworten abzuflachen. Dadurch entfällt die Notwendigkeit verschachtelter Typen.
Das obige ist der detaillierte Inhalt vonWie kann man verschachteltes JSON in Go reduzieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!