Valeur par défaut golang structure à l'aide de "encodage/json"?
Comment définir la valeur par défaut pour Encoding
comme "base64"?
type FileData struct {
UID string `json:"uid"`
Size int `json:"size"`
Content string `json:content`
Encoding string `json:encoding`
User string `json:"user"`
}
J'ai essayé
Encoding string `json:encoding`= "base64" //Not working
Tableau et la tranche de valeurs encoder en JSON tableaux, sauf que []byte code pour une chaîne base64, et un néant tranche encode le nul de la valeur JSON. consultez la documentation de ce golang.org/pkg/encoding/json
Double Possible de Comment spécifier des valeurs par défaut lors de l'analyse JSON en Aller
Double Possible de Comment spécifier des valeurs par défaut lors de l'analyse JSON en Aller
OriginalL'auteur JagsSparrow | 2016-08-26
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas, parce que dans le jeu de Go types n'ont pas de constructeurs.
Au lieu de cela, ont soit explicite de l'initialiseur de fonction (ou méthode sur le pointeur récepteur) ou un constructeur par défaut/fonction (ce sont traditionnellement appelées
New<TypeName>
donc la vôtre seraitNewFileData
) qui permettrait le retour d'un initialisé à la valeur de votre type.Tout-en-tout, j'ai le sentiment que cela ressemble à un XY problème. D'après votre question, il semble que vous voulez avoir une valeur par défaut sur l'un de vos champs si rien n'a été décodées.
Si si, il suffit de post-traiter les valeurs de ce type décodées à partir de JSON et si rien n'a été décodées à
Encodning
définir ce que par défaut que vous voulez.Sinon, vous pourriez envisager de cette approche:
Ont un type personnalisé pour votre domaine.
Quelque chose comme
type EncodingMethod string
devrait le faire.Personnalisé JSON désordonnancement méthode pour ce type qui fait tout ce que la manipulation qu'il veut.
OriginalL'auteur kostix
Vous pouvez définir la valeur par défaut lorsque vous init votre 'FileData'
Voir mon exemple: https://play.golang.org/p/QXwDG7_mul
Page int
a la valeur par défaut 33OriginalL'auteur Son Bui
Depuis votre
FileData
n'est pas trop complexe, vous pouvez facilement faire usage dejson.Unmarshaler
interface. DéclarerEncoding
comme un type distinct et définir la valeur par défaut dans le unmarshal méthode:Maintenant lors de l'encodage d'un json avec vide
Encoding
valeur, il sera mis àbase64
:De sortie:
Code de travail: https://play.golang.org/p/y5_wBgHGJk
OriginalL'auteur abhink