Go-Programmierer stoßen häufig auf die Fehlermeldung „json: String kann nicht in Go-Wert vom Typ int64 entmarshaliert werden“, wenn sie versuchen, JSON zu entmarshalieren Daten. Dieser Fehler tritt auf, wenn das JSON-Feld, das einem int64-typisierten Go-Strukturfeld entspricht, einen Zeichenfolgenwert enthält.
Beachten Sie die folgende Go-Struktur:
type Survey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Wenn Sie diese Struktur in JSON marshallen und das „id“-Feld in einem JavaScript-Client ändern, sendet dieser möglicherweise eine JSON-Zeichenfolge wie diese:
{"id": "1"}
wobei das „id“-Feld jetzt eine Zeichenfolge ist.
Wenn Sie versuchen, diese JSON-Zeichenfolge in die Go-Struktur zu entmarshalieren, wird der oben genannte Fehler auftreten.
Um diese Situation zu bewältigen, können Sie die Option ,string in angeben Ihr JSON-Tag, wie unten gezeigt:
type Survey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Dadurch kann das „id“-Feld als int64 entmarshallt werden, selbst wenn der JSON-Wert eine Zeichenfolge ist.
Es ist wichtig zu beachten, dass die Angabe von omitEmpty für mit Zeichenfolgen markierte Felder nur Auswirkungen auf den Marshalling-Prozess hat, nicht auf den Unmarshaling-Prozess. Das bedeutet, dass Sie einen leeren String nicht in ein int64-Feld entmarshalieren können, selbst wenn er mit ,string,omitempty getaggt ist.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich JSON-Strings in Int64-Go-Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!