Go?JSON反序列化失敗情況及解決過程
Go JSON反序列化失敗情況
Go版本: 1.17.7
源碼包 encoding/json
- 在平時的業(yè)務開發(fā)中,經(jīng)常會有拿到一串序列化后的字符串要來反序列化。
- 反序列化的時候,有時候可能copy錯誤,或者自己粗心寫錯,導致反序列化失敗。
- 短的json還行,肉眼看下就出來,但是長的json看就會很吃力。
- 想要通過json.Unmarshal返回的err看錯誤信息,又比較難理解其意義,就這個問題做一個總結(jié)示例。
下面示例正確的要用來反序列化的如下:
type A struct {
Vint int
Vstring string
Vfloat float64
}
`{
"Vint":1,
"Vstring": "test",
"Vfloat":15.15
}`
某個key缺少雙引號
`{
Vint:1
Vstring: "test"
Vfloat: 15.15
}`
json.Unmarshal報錯返回包含:
looking for beginning of object key string
問題:key都沒有雙引號
某個key:value后面缺少一個逗號
`{
"Vint":1
"Vstring": "test"
"Vfloat": 15.15
}`
json.Unmarshal報錯返回包含:
invalid character '\"' after object key:value pair
問題:value后面得有逗號
"}"前不能有逗號
`{
"Vint":1,
"Vstring": "test",
"Vfloat": 15.15,
}`
json.Unmarshal報錯返回包含:
invalid character '}' looking for beginning of object key string
問題:最后一個key:value不需要跟著逗號
類型賦值錯誤
`{
"Vint":"1",
"Vstring": "test",
"Vfloat": 15.15
}`
json.Unmarshal報錯返回包含:
string into Go struct field
問題:數(shù)據(jù)類型是int的,但是給的是字符串。這個問題是特例,類型賦值錯誤的場景也比較多。
key沒有對應的value
`{
"Vint:1",
"Vstring": "test",
"Vfloat": 15.15
}`
json.Unmarshal報錯返回包含:
invalid character ',' after object key
問題:Vint:1是key,沒有跟上value,一般就是雙引號寫漏了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Go語言kube-scheduler深度剖析開發(fā)之scheduler初始化
這篇文章主要介紹了Go語言kube-scheduler深度剖析開發(fā)之scheduler初始化實現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
GoFrame?gmap遍歷hashmap?listmap?treemap使用技巧
這篇文章主要為大家介紹了GoFrame?gmap遍歷hashmap?listmap?treemap使用技巧的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Golang try catch與錯誤處理的實現(xiàn)
社區(qū)不少人在談論 golang 為毛不用try/catch模式,而采用苛刻的recovery、panic、defer組合,本文就來詳細的介紹一下,感興趣的可以了解一下2021-07-07

