Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entmarshaliere ich JSON-Felder, wenn es sich um Zeichenfolgen und nicht um Ganzzahlen handelt?

Wie entmarshaliere ich JSON-Felder, wenn es sich um Zeichenfolgen und nicht um Ganzzahlen handelt?

DDD
DDDOriginal
2024-11-12 17:33:02852Durchsuche

How to Unmarshal JSON Fields When They Are Strings Instead of Integers?

So behandeln Sie Unmarshal-Fehler, wenn JSON-Felder Zeichenfolgen statt Ganzzahlen sind

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!

Stellungnahme:
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