Heim > Backend-Entwicklung > Golang > Wie kann ich JSON mit einem Tag-Satz entmarshalieren und mit einem anderen in Go marshalieren?

Wie kann ich JSON mit einem Tag-Satz entmarshalieren und mit einem anderen in Go marshalieren?

Barbara Streisand
Freigeben: 2025-01-03 14:40:40
Original
375 Leute haben es durchsucht

How Can I Unmarshal JSON with One Set of Tags and Marshal with Another in Go?

Marshalling und Unmarshalling mit mehreren JSON-Tags

Beim Unmarshalling von JSON-Daten in eine Struktur muss jedes Feld über ein entsprechendes JSON-Tag verfügen, um es anzugeben entsprechenden JSON-Schlüssel. Manchmal müssen Sie jedoch möglicherweise eine neue JSON-Datei mit denselben Daten, aber unterschiedlichen JSON-Tags erstellen.

In Ihrem Fall möchten Sie die JSON-Datei {"name": "Sam", "age" entmarshalieren: 20} in die Struktur Foo ein und erstellen Sie dann eine modifizierte Version mit den Tags „Mitarbeitername“ und „-“, um sie an einen anderen Server zu senden.

Während es praktisch wäre, einem einzelnen Feld mehrere JSON-Tags zuzuweisen, wie Sie möchten vorgeschlagen, wird dies im Paket „encoding/json“ in Go nicht unterstützt. Stattdessen können Sie das gewünschte Ergebnis erzielen, indem Sie nicht exportierte Typen verwenden und umwandeln.

package main

import (
    "bytes"
    "encoding/json"
)

type Foo struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    data := []byte(`{"name":"Sam","age":20}`)

    // Unmarshal to Foo
    var foo Foo
    json.Unmarshal(data, &foo)

    // Create a new type with modified tags
    type Bar struct {
        Name string `json:"employee_name"`
        Age  int    `json:"-"`
    }

    // Cast from Foo to Bar
    bar := Bar(foo)

    // Marshal Bar
    buf := new(bytes.Buffer)
    json.NewEncoder(buf).Encode(bar)

    println(buf.String())
}
Nach dem Login kopieren

Hinweis: Dieser Ansatz basiert auf der nicht exportierten Typleiste. Die Verwendung nicht exportierter Typen trägt dazu bei, eine versehentliche Verwendung an anderer Stelle in der Codebasis zu verhindern. Stellen Sie außerdem sicher, dass die Feldnamen, -typen und die Reihenfolge in beiden Strukturen genau übereinstimmen, damit das Casting ordnungsgemäß funktioniert.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit einem Tag-Satz entmarshalieren und mit einem anderen in Go marshalieren?. 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