Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man verschachteltes JSON in Go reduzieren?

Wie kann man verschachteltes JSON in Go reduzieren?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 04:01:30894Durchsuche

How to Flatten Nested JSON in Go?

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

<code class="go">// Flatten takes a map and returns a new one where nested maps are replaced
// by dot-delimited keys.
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>

Verwenden der Abflachungsfunktion< /h3>

In Ihrem Go-Code:

<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, &amp;social)
if err != nil {
    fmt.Println("error:", err)
}

for _, s := range social {
    socialMap := Flatten(s)
    fmt.Printf("%+v\n", socialMap)
}</code>

Beispielausgabe

Mit der abgeflachten Social-Map erhalten Sie:

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]

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn