Décodage de tableaux avec des types mixtes en JSON
Lorsque vous traitez des tableaux JSON contenant des valeurs de types différents, il est essentiel de réfléchir à la manière de les désorganiser. dans un programme Go de manière efficace. Les tableaux Go nécessitent un type explicitement défini, ce qui pose un défi lors de la gestion de différents types de valeurs.
Solution : Utiliser l'interface{}
La solution réside dans l'utilisation de l'interface{} , un type spécial dans Go qui peut contenir des valeurs de n'importe quel type. En utilisant un tableau interface{}, nous permettons la flexibilité de stocker des valeurs de différents types dans le même tableau.
Exemple de mise en œuvre
Considérez l'exemple JSON suivant :
{"key": ["NewYork", 123]}
Pour désorganiser ce JSON à l'aide de l'interface{}, nous pouvons définir un fichier de données personnalisé structure :
type UntypedJson map[string][]interface{}
Ce type représente une carte des chaînes aux tableaux d'interface{}, permettant la possibilité de stocker des valeurs de tout type.
Démarshalisation du JSON
Pour démarshaler le JSON, nous pouvons utiliser le json.Unmarshal function :
var ut UntypedJson json.Unmarshal([]byte(jsonString), &ut)
La variable ut contiendra désormais les données non marshalées en tant que type UntypedJson. Les clés de la carte correspondent aux clés de l'objet JSON et les valeurs du tableau contiennent les valeurs de différents types.
Exemple Playground
Un exemple complet avec un terrain de jeu Go intégré peut à retrouver ici :
const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
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!