在 Go 语言中,可以使用标准库中的函数将 JSON 字符串转换为 JSON 数据(通常是 Go 中的结构体或 map 类型)。以下是一个简单的示例:
示例代码
- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- )
- // 定义一个结构体,用于映射 JSON 数据
- type Person struct {
- Name string `json:"name"`
- Age int `json:"age"`
- Hobbies []string `json:"hobbies"`
- }
- func main() {
- // JSON 字符串
- jsonStr := `{
- "name": "John",
- "age": 30,
- "hobbies": ["reading", "coding"]
- }`
- // 创建一个结构体变量用于存储解析后的数据
- var person Person
- // 将 JSON 字符串解析为结构体
- err := json.Unmarshal([]byte(jsonStr), &person)
- if err != nil {
- log.Fatalf("Error unmarshalling JSON: %v", err)
- }
- // 打印解析后的数据
- fmt.Printf("Name: %s\n", person.Name)
- fmt.Printf("Age: %d\n", person.Age)
- fmt.Printf("Hobbies: %v\n", person.Hobbies)
- }
复制代码 代码说明
- 定义结构体:
- 使用定义一个与 JSON 数据结构对应的 Go 结构体。
- 使用标签来指定 JSON 中的键与结构体字段的映射关系。
- 函数:
- json.Unmarshal(data []byte, v interface{}) error
复制代码 :
- 是 JSON 字符串的字节切片。
- 是目标变量,用于存储解析后的数据。
- 如果解析成功,中会包含 JSON 数据;如果失败,会返回错误。
- 错误处理:
- 如果 JSON 格式错误或结构体字段不匹配,会返回错误。
输出结果
运行上述代码后,输出如下:- Name: JohnAge: 30Hobbies: [reading coding]
复制代码 使用 map 解析 JSON
如果 JSON 结构不固定,也可以使用来解析 JSON 数据,示例如下:- package main
- import (
- "encoding/json"
- "fmt"
- "log"
- )
- func main() {
- jsonStr := `{
- "name": "John",
- "age": 30,
- "hobbies": ["reading", "coding"]
- }`
- // 使用 map 存储解析后的数据
- var data map[string]interface{}
- // 解析 JSON
- err := json.Unmarshal([]byte(jsonStr), &data)
- if err != nil {
- log.Fatalf("Error unmarshalling JSON: %v", err)
- }
- // 访问 map 中的数据
- fmt.Printf("Name: %v\n", data["name"])
- fmt.Printf("Age: %v\n", data["age"])
- fmt.Printf("Hobbies: %v\n", data["hobbies"])
- }
复制代码 这种方式更加灵活,但需要通过类型断言来访问具体字段的值。
到此这篇关于go语言转换json字符串为json数据的实现的文章就介绍到这了,更多相关go 字符串转换为json数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:互联网
免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作! |
|