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

Wie kann man verschachteltes JSON in Go reduzieren?

Barbara Streisand
Freigeben: 2024-10-27 04:01:30
Original
992 Leute haben es durchsucht

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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>

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, &amp;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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage