Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
Go+ 也提供了对 JSON 编码和解码的内置支持,包括与内置和自定义数据类型之间的通信。接下来我们就来了解一下这部分的一些内容。
导入包
Go+ 在处理 JSON 编码和解码时,一般使用的工具库是 encoding/json 包,导入方式如下:
import (
"encoding/json"
)
布尔类型编码
对布尔类型变量进行 JSON 编码后,还是原来的值,示例代码如下:
import (
"encoding/json"
)
bool, _ := json.Marshal(true)
println(string(bool))
执行结果:
true
亲自试一试!
整型编码
对整型变量进行 JSON 编码后,还是原来的值,示例代码如下:
import (
"encoding/json"
)
intVar, _ := json.Marshal(1024)
println(string(intVar))
执行结果:
1024
亲自试一试!
字符串编码
对字符串变量进行 JSON 编码后,还是原来的值,示例代码如下:
import (
"encoding/json"
)
strVar, _ := json.Marshal("go+, hello")
println(string(strVar))
执行结果:
"go+, hello"
亲自试一试!
自定义结构体编码
还可以对自定义的结构体进行 JSON 编码,这在实际使用过程中是最常见的,示例代码如下:
import (
"encoding/json"
)
type info struct {
Page int `json:"page"`
Fruits []string `json:"fruits"`
}
info1 := &info{
Page: 110,
Fruits: []string{"apple", "peach", "pear"},
}
infoJson, _ := json.Marshal(info1)
println(string(infoJson))
执行结果:
{"page":110,"fruits":["apple","peach","pear"]}
亲自试一试!
自定义结构体解码
另外,也可以对自定义的结构体进行 JSON 解码,特别是在参数解析时使用最多,示例代码如下:
import (
"encoding/json"
)
type info struct {
Page int `json:"page"`
Fruits []string `json:"fruits"`
}
str := `{"page": 1, "fruits": ["apple", "peach"]}`
info1 := info{}
json.Unmarshal([]byte(str), &info1)
println("JSON 解码后的数据:", info1)
println("第二个水果是:", info1.Fruits[1])
执行结果:
JSON 解码后的数据: {1 [apple peach]}
第二个水果是: peach
亲自试一试!