Maison > développement back-end > Golang > Comment conserver les valeurs Int64 lors de l'analyse de JSON dans Go ?

Comment conserver les valeurs Int64 lors de l'analyse de JSON dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-14 16:36:18
original
613 Les gens l'ont consulté

How to Preserve Int64 Values When Parsing JSON in Go?

Conserver les valeurs Int64 lors de l'analyse de JSON dans Go

Lors du traitement des requêtes JSON POST contenant des tableaux d'objets avec des valeurs int64, il est courant de rencontrer des problèmes de conversion. JSON.Unmarshal convertit automatiquement ces valeurs en float64, ce qui peut être gênant. Cet article explore des solutions pour préserver les valeurs int64 d'origine.

Solution 1 : Utilisation du type numérique

Le type json.Decoder inclut une méthode UseNumber qui vous permet de décoder les nombres dans un type personnalisé. En définissant un type Number qui représente un littéral numérique JSON, vous pouvez le reconvertir facilement en int64 :

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)
}
Copier après la connexion

Solution 2 : décodage en structure personnalisée

Vous peut également décoder directement dans une structure spécifique adaptée à votre data :

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"])
}
Copier après la connexion

Attention :

Notez que si votre application interagit avec JavaScript, qui ne prend en charge que les flottants double précision IEEE754, vous pouvez rencontrer des problèmes d'analyse avec les valeurs int64 .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal