JSON (JavaScript Object Notation)是一種比XML 更輕量級的數據交換格式,在易于人們閱讀和編寫的同時,也易于程序解析和生成。盡管JSON是 JavaScript的一個子集,但 JSON采用完全獨立于編程語言的文本格式,且表現為鍵/值對集合的文本描述形式(類似一些編程語言中的字典結構),這使它成為較為理想的、跨平臺、跨語言的數據交換語言。
開發者可以用 JSON 傳輸簡單的字符串、數字、布爾值,也可以傳輸一個數組,或者一個更復雜的復合結構。在 Web 開發領域中,JSON 被廣泛應用于 Web 服務端程序和客戶端之間的數據通信。
Go 語言內建對 JSON 的支持。使用 Go 語言內置的 encoding/json 標準庫,開發者可以輕松使用 Go程序生成和解析 JSON 格式的數據。
JSON在線解析及格式化驗證
編碼JSON
通過結構體生成JSON
使用 json.Marshal()
所數可以對一組數據進行 JSON 格式的編碼。json.Marshal()
函數的聲明如下:
fune Marshal(v interface{})([]byte,error)
- 注意:成員的首字母必須大寫
- 也可以采用格式化編碼
JSON二次編碼
- 可以使用小寫,但是后面需要加
json:"company"
的標識,相當于二次編碼
- 控制字段是否輸入到屏幕
json:"-"
- 控制bool以字符串的類型進行輸出
json:",string"
通過map生成JSON
解碼JSON
解碼到結構體
- 需要先定義一個結構體變量,第二個參數使用這個結構體變量的地址。
- 可以通過
fmt.Printf("tmp=%+v\n", tmp)
使打印字段更加清晰。 - 如果只需要其中一部分,可以在定義一個結構體,使用新的結構體進行解碼。
解碼到map
通過類型斷言反推類型
- 解析為map類型是無法通過
m[“company”]
進行轉化的,要想把數據拆分出來,就要使用類型斷言。
- 切片類型要使用
[]interface{}