J'essaie de convertir une structure Go en JSON à l'aide du json
package, mais tout ce que j'obtiens est {}
. Je suis certain que c'est quelque chose de totalement évident mais je ne le vois pas.
package main
import (
"fmt"
"encoding/json"
)
type User struct {
name string
}
func main() {
user := &User{name:"Frank"}
b, err := json.Marshal(user)
if err != nil {
fmt.Printf("Error: %s", err)
return;
}
fmt.Println(string(b))
}
Ensuite, quand j'essaye de l'exécuter, j'obtiens ceci:
$ 6g test.go && 6l -o test test.6 && ./test
{}
`json:"name"`
à la fin de la définition du champ struct pour conserver le nom de sortie.Problème connexe:
J'avais du mal à convertir la structure en JSON, à l'envoyer comme réponse de Golang, puis à capturer plus tard la même chose en JavaScript via Ajax.
J'ai perdu beaucoup de temps, alors postez la solution ici.
En Go:
En JavaScript:
J'espère que cela aide quelqu'un.
Bonne chance.
la source
Les valeurs Struct sont encodées en tant qu'objets JSON. Chaque champ struct exporté devient membre de l'objet sauf si:
Les valeurs vides sont false, 0, tout pointeur ou valeur d'interface nul, et tout tableau, tranche, mappe ou chaîne de longueur zéro. La chaîne de clé par défaut de l'objet est le nom du champ struct mais peut être spécifiée dans la valeur de balise du champ struct. La clé "json" dans la valeur de la balise du champ struct est le nom de la clé, suivi d'une virgule facultative et d'options.
la source
Vous pouvez définir vos propres méthodes personnalisées MarshalJSON et UnmarshalJSON et contrôler intentionnellement ce qui doit être inclus, par exemple:
la source