json
json tag
struct tag : field要大寫開頭,tag各有其功用
json Marshel
返回 v 的 JSON 编码
supported type See [json/encode]
將struct 轉成 json string
Marshel如果字串含有HTML特殊字元會被轉換,如果不想要被轉換需要自己將EscapeHTML設為false
json.Unmarshal
將json string轉為struct,需了解傳送過來json的結構, 利用type struct 去定義好之後再進行解析
利用 `map[string]interface{}`轉換,但想要取資料解析後比較麻煩,不像是知道結構方便
可以用map取第一層,下一層需reflect,下下層也是...或是利用斷言
僅僅需要將某字串格式化可用
小地方注意:在进行反序列化操作时:第二个参数应该i传地址
json.Compact
如果json string是beautify JSON String,json.Compact可以做壓縮。
轉換練習
JSON String to String, string to JSON String
beautify JSON String to String, string to JSON String
reference
json.Marshal types
e.g. func or chan refuse to serialize
struct tag 還可以有以下功能
printJson(key string, value interface{})
各个 Go 版本中,标准库 encoding/json 的性能表现 在做出使用第三方序列化库替换标准库的决定前,最好先测试下 json 序列化和反序列化是否是应用的性能瓶颈点
TBD: 編按:雖然本文章說json性能較差 但go1.17實測jaon比較好?why?
Last updated