色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang json坑

謝彥文2年前10瀏覽0評論

Golang是一種開源的編程語言,它是適用于本地開發(fā)和云端編程的語言。在Golang中,我們可以使用JSON來表示數(shù)據(jù)。但是,使用JSON時需要注意一些坑點。下面我們來一一了解。

package main
import (
"encoding/json"
"fmt"
)
type student struct {
Name  string
Age   int
Score float64
}
func main() {
s1 := student{
Name:  "Tom",
Age:   18,
Score: 89.5,
}
//將結(jié)構(gòu)體轉(zhuǎn)換為JSON字符串
s1Json, err := json.Marshal(s1)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println(string(s1Json))
//將JSON字符串轉(zhuǎn)換為結(jié)構(gòu)體
var s2 student
json.Unmarshal(s1Json, &s2)
fmt.Println(s2)
}

這是一個簡單的Golang程序,用于演示如何將結(jié)構(gòu)體轉(zhuǎn)換為JSON字符串,以及如何將JSON字符串轉(zhuǎn)換回結(jié)構(gòu)體。但這里存在一些坑點:

1. 如果結(jié)構(gòu)體中的字段是小寫字母開頭的,則不會被JSON Marshal序列化。例如,student結(jié)構(gòu)體中的字段都是大寫字母開頭的,沒有問題。但是如果將Score字段改成score,則會發(fā)現(xiàn)JSON字符串中沒有Score字段。

2. 如果JSON字符串中的鍵名與結(jié)構(gòu)體字段不匹配,則會導致Unmarshal失敗。例如,將s1Json中的鍵名Name改成name,則Unmarshal將失敗。

3. 如果JSON字符串中的值類型與結(jié)構(gòu)體字段不匹配,則會導致Unmarshal失敗。例如,將s1Json中的Score的值改成字符串,則Unmarshal將失敗。

4. 如果JSON字符串中的鍵名與結(jié)構(gòu)體相同,但是大小寫不同,則Unmarshal仍然可以將該值賦給結(jié)構(gòu)體字段。例如,將s1Json中的鍵名Score改成score,則仍然可以成功地Unmarshal。

綜上,使用Golang處理JSON時,需要特別注意以上坑點,以免由此導致程序錯誤。