Convertir interface{} de structure dans Golang
Je suis très nouveau à l'Aller et suis en train d'essayer d'obtenir ma tête autour de tous les différents types et comment les utiliser. J'ai une interface avec les éléments suivants (qui était à l'origine dans un fichier json):
[map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]
et j'ai la structure suivante
type urlTransform struct {
item string
transform string
}
Je n'ai aucune idée de comment faire pour obtenir l'interface de données dans la structure; je suis sûr que c'est vraiment stupide, mais j'ai essayé toute la journée. Toute aide serait grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
Décoder le JSON directement à des types que vous voulez au lieu de les décoder pour un
interface{}
.Déclarer les types qui correspondent à la structure de vos données JSON. Utiliser les structures pour les objets JSON et les tranches de JSON tableaux:
Les noms de champs doivent être exporté (commencer avec une lettre majuscule).
Unmarshal le JSON à la valeur déclarée:
ou
cannot use value (type interface {}) as type []byte in argument to json.Unmarshal: need type assertion
. J'ai essayéerr := json.Unmarshal(data.([]byte), &transforms)
mais maintenant, je suis paspanic: interface conversion: interface {} is []interface {}, not []uint8
🙁De votre réponse :
[map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]
.Comme vous pouvez le voir ici, c'est un
array
qui amap
en elle.Une manière d'obtenir la valeur de ce qui est :
comme vous pouvez le voir dans le code ci-dessus je me fais de la valeur à l'aide de la carte. Et de convertir la valeur du type approprié dans ce cas est
string
.Vous pouvez convertir en un type comme
int
oubool
ou d'un autre type. mais cette approche est douloureux que vous avez besoin pour obtenir la valeur d'un par un et de l'affecter votre votre champ struct.