Heim > Backend-Entwicklung > Golang > Wie bleiben Int64-Werte beim Parsen von JSON in Go erhalten?

Wie bleiben Int64-Werte beim Parsen von JSON in Go erhalten?

Mary-Kate Olsen
Freigeben: 2024-12-14 16:36:18
Original
552 Leute haben es durchsucht

How to Preserve Int64 Values When Parsing JSON in Go?

Int64-Werte beim Parsen von JSON in Go beibehalten

Bei der Verarbeitung von JSON-POST-Anfragen, die Arrays von Objekten mit int64-Werten enthalten, treten häufig Konvertierungsprobleme auf. JSON.Unmarshal konvertiert diese Werte automatisch in float64, was unpraktisch sein kann. In diesem Artikel werden Lösungen zum Erhalt der ursprünglichen int64-Werte untersucht.

Lösung 1: Verwenden des Zahlentyps

Der Typ json.Decoder enthält eine UseNumber-Methode, mit der Sie Zahlen dekodieren können in einen benutzerdefinierten Typ umwandeln. Durch Definieren eines Zahlentyps, der ein JSON-Zahlenliteral darstellt, können Sie es einfach wieder in int64 konvertieren:

func main() {
    body := []byte("{\"tags\":[{\"id\":4418489049307132905},{\"id\":4418489049307132906}]}")
    var dat map[string]interface{}
    d := json.NewDecoder(bytes.NewBuffer(body))
    d.UseNumber()
    if err := d.Decode(&dat); err != nil {
        panic(err)
    }
    // ...
    n := tags[0].(map[string]interface{})["id"].(json.Number)
    i64, _ := strconv.ParseUint(string(n), 10, 64)
}
Nach dem Login kopieren

Lösung 2: Dekodierung in benutzerdefinierte Struktur

Sie kann auch direkt in eine spezifische, auf Sie zugeschnittene Struktur dekodieren Daten:

type A struct {
    Tags []map[string]uint64
}
func main() {
    body := []byte("{\"tags\":[{\"id\":4418489049307132905},{\"id\":4418489049307132906}]}")
    var a A
    if err := json.Unmarshal(body, &a); err != nil {
        panic(err)
    }
    // ...
    println(a.Tags[0]["id"])
}
Nach dem Login kopieren

Achtung:

Beachten Sie, dass bei der Interaktion Ihrer Anwendung mit JavaScript, das nur IEEE754-Floats mit doppelter Genauigkeit unterstützt, Probleme beim Parsen von int64-Werten auftreten können .

Das obige ist der detaillierte Inhalt vonWie bleiben Int64-Werte beim Parsen von JSON in Go erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage