我有這樣的結構:如何不使用Go將一個空的結構編組爲JSON?
type Result struct {
Data MyStruct `json:"data,omitempty"`
Status string `json:"status,omitempty"`
Reason string `json:"reason,omitempty"`
}
但即使MYSTRUCT的實例是完全空的(意思是,所有的值都是默認值),它被序列化爲:
"data":{}
我知道,所述encoding/json文檔指定爲「空」的字段有:
假,0,任何零指針或接口值,任何陣列, 切片,地圖或STR長度爲零的零件
但是沒有考慮具有所有空/默認值的結構。它的所有字段也被標記爲omitempty
,但這沒有效果。
我怎樣才能得到JSON包不是 marshal我的領域是一個空的結構?
我不明白爲什麼'encoding/json' **不能**檢查struct的子字段。這不會很有效,是的。但這絕對不是不可能的。 – nemo
@nemo我明白了你的觀點,我改變了措詞。它不這樣做,因爲它不會有效。不過,這可以通過'json.Marshaler'完成。 – Luke
通過在MyStruct本身上實現一個'json.Marshaler',它是**不可能**決定是否是'MyStruct'是empty_。證明:http://play.golang.org/p/UEC8A3JGvx – chakrit