Je suis nouveau à Go et j'utilise Gorm pour interroger ma base de données postgres mais j'ai du mal à retourner mes données dans un format de dictionnaire, où le type pokemon sert de clé pour un tableau de tous les pokemon de ce typegolang interrogeant la base de données en utilisant Gorm et retournant json dans la réponse http
JSON: ne peut pas objet unmarshal en valeur Go de type [] models.Pokemon
voici mon code:
type Pokemon struct {
Name string `db:"name"`
Type string `db:"type"`
}
pokemonTypes := [6]string{
"fire",
"electric",
"water",
"grass",
}
var retData struct {
Poke []Pokemon
}
m := make(map[string][]Pokemon)
for _, t := range pokemonTypes {
pokemon := DB.Where(&Pokemon{Type: t}).Find(&retData.Poke)
p, _ := json.Marshal(pokemon)
err = json.Unmarshal(p, &retData.Poke) // getting error here
if err != nil {
fmt.Println(err)
}
m[category] = retData.Poke
}
data, _ := json.Marshal(m)
w.Write(data) // http repsonse
J'ai dans ma base de données
name | type
----------------------
pikachu | electric
charmander | fire
blaziken | fire
venusaur | grass
treeko | grass
squirtle | water
Je veux retourner des données dans ce format JSON
{
“electric”: [
{"name": "pikachu", "type": "electric"},
],
"fire": [
{"name": "charmander", "type": "fire"},
{"name": "blaziken", "type": "fire"}
],
"grass": [
{"name": "venusaur", "type": "grass"},
{"name": "treeko", "type": "grass"},
],
"water": [
{"name": "squirtle", "type": "water"},
]
}
merci l'homme! il se trouve que je n'ai pas besoin de marshal/unmarshal aussi puisque les données sont déjà dans retData.Poke – user3226932