go语言转换json字符串为json数据

在 Go 语言中,可以使用标准库 encoding/json 中的 json.Unmarshal 函数将 JSON 字符串转换为 JSON 数据(通常是 Go 中的结构体或 map 类型)。以下是一个简单的示例:

示例代码

go 复制代码
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)
}

代码说明

  1. 定义结构体

    • 使用 struct 定义一个与 JSON 数据结构对应的 Go 结构体。
    • 使用 json:"key" 标签来指定 JSON 中的键与结构体字段的映射关系。
  2. json.Unmarshal 函数

    • json.Unmarshal(data []byte, v interface{}) error
      • data 是 JSON 字符串的字节切片。
      • v 是目标变量,用于存储解析后的数据。
      • 如果解析成功,v 中会包含 JSON 数据;如果失败,会返回错误。
  3. 错误处理

    • 如果 JSON 格式错误或结构体字段不匹配,json.Unmarshal 会返回错误。

输出结果

运行上述代码后,输出如下:

复制代码
Name: John
Age: 30
Hobbies: [reading coding]

使用 map 解析 JSON

如果 JSON 结构不固定,也可以使用 map[string]interface{} 来解析 JSON 数据,示例如下:

go 复制代码
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"])
}

这种方式更加灵活,但需要通过类型断言来访问具体字段的值。

希望这些示例对你有帮助!

相关推荐
luckys.one18 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
TomCode先生19 小时前
c#动态树形表达式详解
开发语言·c#
高-老师19 小时前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥20 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_4378309420 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
鹿鹿学长21 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
zhousenshan21 小时前
Python爬虫常用框架
开发语言·爬虫·python
是誰萆微了承諾21 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
小菜全1 天前
基于若依框架Vue+TS导出PDF文件的方法
javascript·vue.js·前端框架·json
DKPT1 天前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习