Dans Go, l'analyse des flux JSON peut parfois entraîner des complications, en particulier lorsqu'il s'agit d'entiers et de valeurs nulles. Explorons un problème courant et sa résolution à l'aide de types nullables.
Problème :
Lors de l'analyse de données JSON contenant des entiers, vous pouvez rencontrer l'erreur suivante :
json: cannot unmarshal null into Go value of type int64
Cette erreur se produit lorsque vous avez des entiers nullables dans le JSON, que le package Go JSON standard ne peut pas gérer directement.
Solution :
Pour résoudre ce problème, envisagez d'utiliser des pointeurs vers des entiers. Un pointeur peut être soit nul (représentant une valeur nulle), soit pointer vers un entier avec une valeur associée. Voici comment l'implémenter :
import ( "encoding/json" "fmt" ) var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`) type jsonobj struct{ World []*int64 } type World struct{ Data *int64 } func main() { var data jsonobj jerr := json.Unmarshal(d, &data) if jerr != nil { fmt.Println(jerr) } for _, w := range data.World { if w == nil { fmt.Println("Got a null value") } else { fmt.Println(*w) } } }
Dans cet exemple modifié :
Lors de l'analyse du JSON, il gère correctement les valeurs entières numériques et nulles et les imprime en conséquence :
Got a null value 2251799813685312
Cette approche fournit un moyen simple et efficace de gérer les entiers nullables. dans Go lors de l'analyse des flux JSON.
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!