Heim > Artikel > Backend-Entwicklung > Wie entmarshaliere ich JSON-Felder, wenn es sich um Zeichenfolgen und nicht um Ganzzahlen handelt?
Beim Umgang mit JSON-Daten kann es vorkommen, dass ein JSON-Feld als Zeichenfolge dargestellt wird anstelle einer Ganzzahl, was dazu führt, dass JSON Unmarshal fehlschlägt. Dieses Problem tritt auf, wenn JavaScript, das int64-Werte nicht gut verarbeiten kann, JSON-Daten codiert.
Berücksichtigen Sie die folgende Struktur:
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Wenn Sie diese Struktur mit dem Standard-Marshal in JSON marshallen Funktion und ändern Sie dann das Namensfeld mit jQuery, bevor Sie es zurück an Ihren Go-Handler senden. Das ID-Feld kann als Zeichenfolge codiert werden. Dies führt zu einem Fehler, wenn versucht wird, das JSON in eine tySurvey-Struktur zu entmarshalieren:
json: cannot unmarshal string into Go value of type int64
Um dieses Problem zu beheben, können Sie angeben, dass das ID-Feld aus einer Zeichenfolge entmarshallt werden kann, indem Sie ,string zum JSON hinzufügen tag:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` // Add ",string" to handle string values Name string `json:"name,omitempty"` }
Dadurch kann der JSON-Unmarshal die Zeichenfolgendarstellung des ID-Felds erfolgreich in eine konvertieren Ganzzahl.
Beachten Sie, dass das Festlegen von omitempty für ein Feld mit ,string nicht empfohlen wird, da die leere Zeichenfolge nicht in eine Ganzzahl umgewandelt werden kann.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON-Felder, wenn es sich um Zeichenfolgen und nicht um Ganzzahlen handelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!