JSON 序列化和反序列化 In Go
基礎語法
在 Go 中我們主要使用官方的 encoding/json 包對 json 數據進行序列化和反序列化,主要使用方法有:
- 序列化:
- 反序列化:
簡單的例子
當我們運行代碼的時候可以得到如下輸出結果:
在這個列子中,我們使用?unmarshal?和?marshal?將一個整數的 JSON 二進制轉化為 go?int?數據
註意:在實際應用中,我們在序列化和反序列化的時候,需要檢查函數返回的 err,如果 err 不為空,表示數據轉化失敗。
例如:我們把上面例子中 value 類型由?int?修改為?string?後再次運行代碼,你將得到?unmarshal error is:json:cannot unmarshal number into Go value of type string的錯誤提醒。
數據對應關系
JSON 和 Go 數據類型對照表
例如:
運行代碼我們可以得到如下輸出結果
自定義數據類型
除了使用上面基礎數據外,對於那些比較復雜的數據集合(Object),我們還可以使用自定義數據類型 struct 來轉化。
Go 中關於 JSON 轉化字段名的對應語法為:
如果我們想忽略那些空值的字段,我們可以使用 omitempty 選項:
如果我們想忽略特定字段:
組合示例
實戰練習
假如我們有這一樣一段 JSON 數據,它表示一個學生的考試成績,下面我們就來看看在 Go 中如何序列化和反序列化。
數據準備
反序列化
運行代碼輸出結果為:
序列化
當我們運行代碼後,打開 data2.json 文件。將看到如下內容:
Python 運維開發——18天訓練營
本課程為:網絡班+面授班(北京)
¥1999 倒計時3天
添加小助手WeChat:17812796384,回復【18天訓練營】
Golang 課程5月開課,想要學習的小夥伴抓緊時間,早報名享受早鳥價
JSON 序列化和反序列化 In Go