Standardwert golang Struktur mit `encoding/json` ?
How to set default-Wert für Encoding
als "base64"?
type FileData struct {
UID string `json:"uid"`
Size int `json:"size"`
Content string `json:content`
Encoding string `json:encoding`
User string `json:"user"`
}
Versuchte ich
Encoding string `json:encoding`= "base64" //Not working
Array-und slice-Werte codieren als JSON-arrays, mit der Ausnahme, dass []byte kodiert als base64-kodierten string, und einem null-Scheibe kodiert als null-JSON-Wert. schauen Sie sich die Dokumentation hier golang.org/pkg/encoding/json
Möglich, Duplikat der Wie Sie angeben, default-Werte beim Parsen von JSON in Go
Möglich, Duplikat der Wie Sie angeben, default-Werte beim Parsen von JSON in Go
InformationsquelleAutor JagsSparrow | 2016-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht, weil in der Go-Typen haben keine Konstruktoren.
Stattdessen haben entweder eine explizite Initialisierung-Funktion (oder Methode auf den Zeiger-Empfänger) oder ein Konstruktor/Fabrik-Funktion (diese werden üblicherweise als
New<TypeName>
also dir wäreNewFileData
) was wieder die initialisierten Wert von Ihrem Typ.All-in-all, ich habe ein Gefühl, das sieht aus wie ein XY-problem. Aus Ihrer Frage, es scheint, Sie wollen ein Standard-Wert auf einem Ihrer Felder wurde nichts deren Marshalling rückgängig gemacht wurde.
Wenn dem so ist, post-Prozess, die Werte dieses Typs deren Marshalling rückgängig gemacht wurde von JSON und wenn dort nichts wurde deren Marshalling rückgängig gemacht wurde, um
Encodning
legen Sie es auf was auch immer Standard, die Sie wollen.Alternativ könnten Sie denken, dieser Ansatz:
Haben einen benutzerdefinierten Typ für das Feld.
Etwas wie
type EncodingMethod string
tun sollte.Haben eine benutzerdefinierte JSON-unmarshaling Methode für diese Art, die würde alles tun, was die Handhabung es will.
InformationsquelleAutor kostix
Sie können default-Wert, wenn Sie init Ihrem 'FileData'
Siehe mein Beispiel: https://play.golang.org/p/QXwDG7_mul
Page int
hat default-Wert 33InformationsquelleAutor Son Bui
Seit Ihr
FileData
ist nicht zu Komplex, können Sie ganz einfach nutzenjson.Unmarshaler
- Schnittstelle. ErklärenEncoding
als separaten Typ und den Standardwert in der unmarshal-Methode:Nun codieren, wenn Sie eine json mit leeren
Encoding
Wert, es werde gesetzt werden, umbase64
:Ausgabe:
Arbeiten code: https://play.golang.org/p/y5_wBgHGJk
InformationsquelleAutor abhink