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?
Lösung 1
Sie können einen Decoder und UseNumber , um Ihre Zahlen ohne Verlust zu dekodieren:
Der Number
Typ ist wie folgt definiert:
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.