Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich numerische JSON-Werte mit Exponenten in Golang?

Wie entmarshaliere ich numerische JSON-Werte mit Exponenten in Golang?

Mary-Kate Olsen
Freigeben: 2024-11-15 10:31:02
Original
1010 Leute haben es durchsucht

How to Unmarshal JSON Numeric Values with Exponents in Golang?

Golang Json Unmarshal Numeric with Exponent

Beim Unmarshaling einer JSON-Zeichenfolge in eine Struktur in Golang werden numerische Werte mit Exponenten oft als 0 interpretiert . Dies kann eine Herausforderung sein, da Exponenten ein Standardbestandteil der JSON-Spezifikation sind.

Um dieses Problem zu beheben, muss der Typ des numerischen Felds entweder in float32 oder float64 geändert werden. Diese Gleitkommatypen unterstützen die Darstellung von Exponenten. Beispiel:

type Person struct {
    Id    float64          `json:"id"`
    _Id   int64             
    Name  string           `json:"name"`
}
Nach dem Login kopieren

Nach dem Ändern des Typs wird durch das Unmarshaling der JSON-Zeichenfolge in der Struktur der numerische Wert korrekt mit dem Exponenten analysiert.

Alternativer Ansatz mit einer Hilfsfunktion

Wenn das numerische Feld eine Ganzzahl sein muss, können Sie eine Hilfsfunktion verwenden, um den Gleitkommawert nach dem Unmarshaling in den Ganzzahltyp umzuwandeln:

import (
    "encoding/json"
    "fmt"
    "math"
    "os"
    "reflect"
)

type Person struct {
    Id    float64          `json:"id"`
    _Id   int64             
    Name  string           `json:"name"`
}

var f Person
var b = []byte(`{"id": 1.2e+8, "Name": "Fernando"}`)

func main() {
    _ = json.Unmarshal(b, &f)

    if reflect.TypeOf(f._Id) == reflect.TypeOf((int64)(0)) {
        fmt.Println(math.Trunc(f.Id))
        f._Id = int64(f.Id)
    }
}
Nach dem Login kopieren

Hier Beispielsweise kürzt die Hilfsfunktion math.Trunc den Gleitkommawert auf eine Ganzzahl. Der gekürzte Wert wird dann dem Feld _Id zugewiesen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich numerische JSON-Werte mit Exponenten in Golang?. 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