JSON是一種輕量級的數(shù)據(jù)交換格式,它已經(jīng)成為了Web上數(shù)據(jù)交換的事實標(biāo)準(zhǔn)。隨著Go語言的不斷發(fā)展,Golang JSON也成為了Golang的重要組成部分。
import ( "encoding/json" "fmt" )
Golang JSON包提供了結(jié)構(gòu)體數(shù)據(jù)與JSON數(shù)據(jù)之間的相互轉(zhuǎn)換功能,同時也提供了讀取和生成JSON數(shù)據(jù)的解析器和生成器。當(dāng)數(shù)據(jù)源有一個結(jié)構(gòu)體,而目標(biāo)格式是JSON時,編碼器就會發(fā)揮作用。如果有JSON數(shù)據(jù),而需要將其轉(zhuǎn)化為結(jié)構(gòu)體,則解碼器會發(fā)揮作用。
type Person struct { Name string `json:"name"` Age int `json:"age"` }
在Golang里,結(jié)構(gòu)體中的變量必須首字母大寫,這樣才能被JSON包訪問。如果想要指定JSON輸出字段名,就需要為每個變量添加一個tag。
func main() { p := Person{ Name: "John", Age: 35, } jsonBytes, err := json.Marshal(p) if err != nil { panic(err) } fmt.Println(string(jsonBytes)) }
將結(jié)構(gòu)體序列化為JSON格式的代碼如上例所示。json.Marshal函數(shù)接收一個結(jié)構(gòu)體,并將其轉(zhuǎn)換為JSON格式的字節(jié)數(shù)組。通過fmt.Println函數(shù)將字節(jié)數(shù)組轉(zhuǎn)換為字符串輸出到控制臺。輸出結(jié)果如下所示:
{"name":"John","age":35}
Golang JSON是一種非常實用的工具,在數(shù)據(jù)讀取和轉(zhuǎn)換方面節(jié)省了很多時間和資源。使用Golang JSON,可以很方便地操作JSON格式的數(shù)據(jù),并同時兼顧了數(shù)據(jù)格式的統(tǒng)一性和代碼運行的效率。