Go JSON编码与解码的实现
在Go语言中,JSON编码与解码非常常见,Golang标准库提供了encoding/json
包来支持JSON格式数据的序列化和反序列化。接下来将详细讲解如何使用encoding/json
包进行JSON编码与解码。
JSON编码
JSON编码,指将Go语言中的结构体等数据类型转换成JSON格式的字符串。在Go语言中,使用json.Marshal()
函数进行JSON编码。
示例1:将一个结构体转换成JSON格式字符串,输出结果。
type Book struct {
Title string `json:"title"`
Author string `json:"author"`
Price float64 `json:"price"`
}
book := Book{
Title: "Go语言编程",
Author: "Xiao Lin",
Price: 30.5,
}
jsonStr, err := json.Marshal(book)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", jsonStr)
以上代码输出结果为:
{"title":"Go语言编程","author":"Xiao Lin","price":30.5}
示例2:JSON编码一个嵌套的结构体,并将结果输出到控制台。
type Address struct {
City string `json:"city"`
Phone string `json:"phone"`
}
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address Address `json:"address"`
}
person := Person{
Name: "Alice",
Age: 20,
Address: Address{
City: "Beijing",
Phone: "123456",
},
}
jsonStr, err := json.Marshal(person)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", jsonStr)
以上代码输出结果为:
{"name":"Alice","age":20,"address":{"city":"Beijing","phone":"123456"}}
JSON解码
JSON解码,指将JSON格式的字符串转换成对应的Go语言数据类型。在Go语言中,使用json.Unmarshal()
函数进行JSON解码。
示例3:将以JSON格式编码的字符串解码,输出结果。
jsonStr := `{"title":"Go语言编程","author":"Xiao Lin","price":30.5}`
var book Book
err := json.Unmarshal([]byte(jsonStr), &book)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", book)
以上代码输出结果为:
{Title:Go语言编程 Author:Xiao Lin Price:30.5}
示例4:JSON解码,演示如何解析一个“动态”JSON对象。
jsonStr2 := `{"name":"Bob","age":23,"address":{"city":"Shanghai","phone":"654321"}}`
var dynamicMap map[string]interface{}
err = json.Unmarshal([]byte(jsonStr2), &dynamicMap)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Name: %v, Age: %v, City: %v, Phone: %v\n",
dynamicMap["name"], dynamicMap["age"],
dynamicMap["address"].(map[string]interface{})["city"],
dynamicMap["address"].(map[string]interface{})["phone"])
以上代码输出结果为:
Name: Bob, Age: 23, City: Shanghai, Phone: 654321
总结
encoding/json
包提供了Go语言中JSON编码与解码的基础API。我们可以使用它来编码和解码JSON格式的数据。通过本文介绍的示例,相信读者已经学会了如何使用encoding/json
进行JSON编码和解码的基本使用技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go JSON编码与解码的实现 - Python技术站