Ho una struct come questo:Come eseguire il marshalling di una struttura vuota in JSON con Go?
type Result struct {
Data MyStruct `json:"data,omitempty"`
Status string `json:"status,omitempty"`
Reason string `json:"reason,omitempty"`
}
Ma anche se l'istanza di MyStruct è completamente vuota (significato, tutti i valori sono di default), è in fase di serializzato come:
"data":{}
So che le encoding/json documenti specificano che i campi "vuoti" sono:
falso, 0, qualsiasi puntatore nullo o il valore dell'interfaccia, e qualsiasi array, fetta, carta, o str di lunghezza zero
ma senza considerazione per una struttura con tutti i valori vuoti/predefiniti. Tutti i suoi campi sono anche contrassegnati con omitempty
, ma questo non ha alcun effetto.
Come posso ottenere il pacchetto JSON su non marshal il mio campo che è una struttura vuota?
Non vedo perché 'encoding/json' ** non può ** controllare i campi secondari della struct. Non sarebbe molto efficiente, sì. Ma non è certamente impossibile. – nemo
@nemo Vedo il tuo punto, ho cambiato il testo. Non lo fa perché non sarebbe efficiente. Tuttavia, può essere eseguito con 'json.Marshaler' caso per caso. – Luke
Non è ** possibile ** decodificare se 'MyStruct' è vuoto_ implementando un' json.Marshaler' su 'MyStruct' stesso. Dimostrazione: http://play.golang.org/p/UEC8A3JGvx – chakrit