go语言json解析的坑 注意事项
生活随笔
收集整理的這篇文章主要介紹了
go语言json解析的坑 注意事项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
注意事項:
1. 結構體中的字段名首字母需大寫,這樣解析json時才能賦值;字段名小寫的話,解析不會報錯,但是字段都是空值
2. json字符串可以解析成結構體數組,或者結構體指針的數組,具體操作可見筆者的另外一篇博客
?
例子如下:
結構體定義:注意此時結構體字段的首字母是小寫,也就是解析json時會失敗
type robot struct {
? ? name ? string `json:"name"`
? ? amount int ? ?`json:"amount"`
}
json字符串為
str := "{\"name\":\"nam1\",\"amount\":100}"
解析代碼如下
func parse_one() {fmt.Println("解析json字符串到單個結構體")str := "{\"name\":\"nam1\",\"amount\":100}"one := robot{}err := json.Unmarshal([]byte(str), &one)if err != nil {fmt.Printf("parse_one(), err=%v", err)}fmt.Printf("name=%v,amount=%v \n", one.name, one.amount) }打印結果如下:可以看到解析出來的字段都是空值
所以我們要做修改,結構體定義如下,即字段首字母大寫
type robot struct {
?? ?Name ? string `json:"name"`
?? ?Amount int ? ?`json:"amount"`
}
再執行上面的解析函數,可以看到打印結果,里面字段已經有值了
?
完整的正確代碼如下
package main import ("encoding/json""fmt" ) type robot struct {Name string `json:"name"`Amount int `json:"amount"` } // 解析到單個結構體 func parse_one() {fmt.Println("解析json字符串到單個結構體")str := "{\"name\":\"nam1\",\"amount\":100}"one := robot{}err := json.Unmarshal([]byte(str), &one)if err != nil {fmt.Printf("parse_one(), err=%v", err)}fmt.Printf("name=%v,amount=%v \n", one.Name, one.Amount) } func main() {// 解析到單個結構體parse_one() }?
總結
以上是生活随笔為你收集整理的go语言json解析的坑 注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16.04安装vim报错 v
- 下一篇: go语言json字符串解析为结构体数组,