編碼與解碼

Go 標準庫序列化:JSON 與 XML。

JSON

json.Marshal - 序列化 (Serialization)

將 Go 的資料結構轉換成 JSON 字串:物件 → 字串

json.Unmarshal - 反序列化 (Deserialization)

將 JSON 字串轉換回 Go 的資料結構:字串 → 物件

Struct Tags

Tag說明
json:"欄位名稱"自定義欄位名稱
json:",omitempty"空值處理(空字串, 0, nil…等)
json:"-"欄位排除
json:",string"型別轉換
json:"欄位名稱,omitempty"組合選項
json:"欄位名稱,string"自定義名稱並轉換為字串

特殊用途

Tag說明
json:">屬性"允許在欄位名稱中使用特殊字元
json:",raw"保留原始 JSON 訊息(與 json.RawMessage 一起使用)

XML

Struct Tags

Tag說明
xml:"名稱"定義 XML 元素的名稱
xml:"名稱,attr"將欄位定義為 XML 屬性而非元素
xml:"父元素>子元素"定義 XML 的巢狀結構關係
xml:",innerxml"將內容視為原始 XML 處理
xml:",any"用於處理任意 XML 元素
xml:"-"忽略該欄位,不進行 XML 序列化
xml:",omitempty"當欄位為空值時省略
xml:",cdata"將內容包裝在 CDATA 區段中
xml:"namespace 名稱"定義 XML 命名空間
xml:"namespace:元素"使用特定命名空間的元素