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"` }
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"` }
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!