エンコーディングとデコーディング

エンコーディングとデコーディング

Go 標準ひょうじゅんライブラリのシリアライゼーション:JSON と XML。

JSON

json.Marshal - シリアライゼーション

Go のデータ構造こうぞうを JSON 文字列もじれつ変換へんかんオブジェクト → <ruby>文字列<rt>もじれつ</rt></ruby>

json.Unmarshal - デシリアライゼーション

JSON 文字列もじれつを Go のデータ構造こうぞう変換へんかん<ruby>文字列<rt>もじれつ</rt></ruby> → オブジェクト

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:要素"特定とくてい名前なまえ空間くうかん要素ようそ使用しよう