Entmarshalling String-codierter Ganzzahlen in Go
Beim Versuch, JSON mit String-Werten in ein Integer-Feld zu entmarshallen, kann der Fehler auftreten: „json: String kann nicht in Go-Wert vom Typ int64 entmarshaliert werden.“ Dies liegt daran, dass beim JSON-Unmarshaling standardmäßig davon ausgegangen wird, dass numerische Typen wie int64 numerische Zeichen enthalten sollten.
Problem:
Eine Go-Struktur, die ein int64-Feld definiert, empfängt JSON mit dem entsprechenden Feld als String kodiert. Diese Nichtübereinstimmung der Datentypen führt dazu, dass der Unmarshaling-Prozess fehlschlägt.
Lösung:
Die empfohlene Lösung besteht darin, das Tag „,string“ im JSON-Strukturtag für das Ganzzahlfeld zu verwenden . Dies weist den Unmarshaling-Prozess an, Werte vom Typ string:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Implementierung:
Mit der geänderten Struktur können JSON-Daten mit einem als String codierten ID-Feld nun erfolgreich in ein Go-Objekt vom Typ tySurvey entmarshallt werden.
Hinweis:
Es ist wichtig zu bedenken, dass die Angabe von omitempty im Tag nicht zulässt, dass die leere Zeichenfolge dekodiert wird. omitempty wird ausschließlich zu Kodierungszwecken verwendet.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3