json
Contents
tag 標記用法
範例 json:"name,omitempty"
這個欄位名稱為 name,如果欄位內容是空值的話,則欄位會被忽略
範例 json:"-"
不管欄位名稱是什麼,都會忽略不印出
omitempty
這個欄位 如果是結構的話
無論是否為空值,一定會產生出欄位,值為空
例如
s := struct {
Foo struct {
Bar string `json:",omitempty"`
} `json:",omitempty"`
}{}
// encoding result
{"Foo":{}}
解決辦法是透過指標的方式
例如
s := struct {
Foo *struct {
Bar string `json:",omitempty"`
} `json:",omitempty"`
}{}
// encoding result
{}
此外如果欄位型態是 time.Time
的話
omitempty 不會運作
escaped
json 編碼的時候如果碰到 >
<
&
會轉為逃逸字元
範例
s := []string{
"<foo>",
"bar & baz",
}
// result
["\u003cfoo\u003e","bar \u0026 baz"]
如果要避免的話,要在 json.Encoder
實例使用 SetEscapeHTML(false)