Bei der Analyse von json in Go bleiben int64-Werte erhalten

8

Ich verarbeite einen JSON-POST in Go, der ein Array von Objekten mit 64-Bit-Ganzzahlen enthält. Bei der Verwendung von json.Unmarshal scheinen diese Werte in float64 konvertiert zu werden, was nicht sehr hilfreich ist.

%Vor%

Gibt es eine Möglichkeit, das ursprüngliche int64 in der Ausgabe von json.Unmarshal zu erhalten?

Go Playground des obigen Codes

    
sicr 05.06.2013, 17:33
quelle

1 Antwort

18

Lösung 1

Sie können einen Decoder und UseNumber , um Ihre Zahlen ohne Verlust zu dekodieren:

Der Number Typ ist wie folgt definiert:

%Vor%

was bedeutet, dass Sie es einfach konvertieren können:

%Vor%

Lösung 2

Sie können auch in eine spezifische Struktur entschlüsseln, die auf Ihre Bedürfnisse zugeschnitten ist:

%Vor%

Persönlich bevorzuge ich im Allgemeinen diese Lösung, die strukturierter und leichter zu pflegen ist.

Vorsicht

Eine kleine Anmerkung, wenn Sie JSON verwenden, weil Ihre Anwendung teilweise in JavaScript ist: JavaScript hat keine 64-Bit-Integer, sondern nur einen Zahlentyp, der der IEEE754-Float mit doppelter Genauigkeit ist. Sie wären also nicht in der Lage, diesen JSON in JavaScript ohne Verlust zu analysieren, indem Sie die Standardanalysefunktion verwenden.

    
Denys Séguret 05.06.2013, 17:43
quelle

Tags und Links