Heim > Backend-Entwicklung > Golang > Wie gehe ich mit String-Eingaben für Int64-Felder beim JSON-Unmarshaling um?

Wie gehe ich mit String-Eingaben für Int64-Felder beim JSON-Unmarshaling um?

Susan Sarandon
Freigeben: 2024-11-15 03:17:02
Original
277 Leute haben es durchsucht

How to Handle String Input for Int64 Fields in JSON Unmarshaling?

Verarbeitung von String-Eingaben für Int64-Felder im JSON-Unmarshaling

Das Unmarshaling von JSON-Daten in Go-Werten kann gelegentlich auf Herausforderungen stoßen, insbesondere wenn es um String-Darstellungen von geht Integrale Werte. In diesem Artikel wird eine Lösung für den Fehler „JSON: String kann nicht in Go-Wert vom Typ int64 entmarshaliert werden“ beim Unmarshaling von JSON-Daten mit string-codierten Integralfeldern untersucht.

Problembeschreibung

Betrachten Sie die folgende Go-Struktur, die eine Umfrageantwort darstellt:

type tySurvey struct {
    Id     int64            `json:"id,omitempty"`
    Name   string           `json:"name,omitempty"`
}
Nach dem Login kopieren

In diesem Beispiel ist das ID-Feld definiert als int64. Nachdem tySurvey in JSON serialisiert und zur clientseitigen Bearbeitung übertragen wurde, aktualisiert der Client das Namensfeld. Allerdings wird das ID-Feld während der Datenübertragung versehentlich als String codiert.

Beim Empfang der geänderten JSON-Daten auf dem Server wird die ursprüngliche tySurvey-Struktur entmarshaled, was zu einem Fehler führt: „json: string kann nicht entmarshaliert werden Go-Wert des Typs int64."

Lösung

Die Lösung besteht darin, die JSON-Feld-Tags zu ändern, indem ,string an die Typdefinition angehängt wird. Dadurch wird der JSON-Unmarshaler angewiesen, String-Darstellungen für ganzzahlige Werte zu akzeptieren:

type tySurvey struct {
   Id   int64  `json:"id,string,omitempty"`
   Name string `json:"name,omitempty"`
}
Nach dem Login kopieren

Die Option „,string“ ermöglicht die nahtlose Konvertierung von string-codierten ganzzahligen Werten in entsprechende Go-Werte während des Unmarshalings.

Zusätzliche Überlegungen

Bei der Angabe von ,omitempty für string-codierte Integralwerte, Es ist wichtig zu beachten, dass die leere Zeichenfolge nicht dekodiert werden kann. Diese Einschränkung stellt sicher, dass omitempty nur während der Codierung verwendet wird.

Fazit

Das Anhängen von ,string an die JSON-Feld-Tags ermöglicht ein müheloses Unmarshaling von string-codierten Integralwerten in Go. Diese Technik vereinfacht die Datenverarbeitung und erhöht die Robustheit des Codes, indem sie clientseitige Datenmanipulationen ermöglicht, die unbeabsichtigt Feldtypen ändern können.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit String-Eingaben für Int64-Felder beim JSON-Unmarshaling um?. 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