Wie entmarshaliere ich JSON-Strings in benutzerdefinierte Go-Typen, die von Skalarwerten abgeleitet werden?

Barbara Streisand
Freigeben: 2024-11-19 12:54:02
Original
297 Leute haben es durchsucht

How to Unmarshal JSON Strings into Custom Go Types Derived from Scalar Values?

Wie kann JSON Unmarshal mit von Skalaren abgeleiteten Werttypen in Go umgehen?

In Go werden Skalarwerte häufig zur Darstellung einfacher Datentypen verwendet wie ganze Zahlen und Strings. Von diesen Skalarwerten abgeleitete benutzerdefinierte Typen erfordern möglicherweise eine besondere Behandlung beim JSON-Unmarshaling, um eine genaue Zuordnung sicherzustellen.

Problemstellung

Implementieren Sie die UnmarshalJSON-Methode für einen benutzerdefinierten Typ, der a erweitert Skalare Ganzzahl in Go. Das Ziel besteht darin, eingehende JSON-Zeichenfolgen automatisch in Werte dieses benutzerdefinierten Typs umzuwandeln.

Lösung

Um die Einschränkungen zu überwinden, die UnmarshalJSON beim Erwarten einer Struktur mit sich bringt, führen Sie die folgenden Schritte aus:

  1. Verwenden Sie einen Zeigerempfänger:Verwenden Sie einen Zeigerempfänger für die UnmarshalJSON-Methode. Wertempfänger verlieren Änderungen bei der Rückgabe der Methode.
  2. JSON-Text entmarshalieren: JSON-Text entmarshalieren, um eine einfache Zeichenfolge zu erhalten, wobei alle JSON-Anführungszeichen entfernt werden.
  3. Suchen und Zuweisen: Verwenden Sie die Lookup-Funktion, um eine Instanz des benutzerdefinierten Typs basierend auf der analysierten Zeichenfolge abzurufen. Weisen Sie diesen Wert dem Zeigerempfänger zu.

Beispielimplementierung

func (intValue *PersonID) UnmarshalJSON(data []byte) error {
  var s string
  if err := json.Unmarshal(data, &s); err != nil {
    return err
  }
  *intValue = Lookup(s)
  return nil
}
Nach dem Login kopieren

Zusätzliche Überlegungen

  • Stellen Sie die Konsistenz zwischen JSON-Tags und den zu entmarshalingenden JSON-Daten sicher.
  • Verwenden Sie Zeiger, um zu vermeiden, dass beim Unmarshaling vorgenommene Änderungen verloren gehen.
  • Erwägen Sie eine benutzerdefinierte MarshalJSON-Methode, wenn Sie die JSON-Serialisierung anpassen möchten.

Mit diesen implementierten Techniken können Sie JSON-Strings effektiv in Ihre benutzerdefinierten Typen entpacken, die aus Skalarwerten in Go abgeleitet sind.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON-Strings in benutzerdefinierte Go-Typen, die von Skalarwerten abgeleitet werden?. 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