go语言处理json数据的核心方法是使用encoding/json包。解析json字符串需定义对应结构体并用json.unmarshal,注意字段首字母大写及标签映射;结构体转json用json.marshal或json.marshalindent;嵌套结构需定义对应嵌套结构体;动态json可用map[string]interface{}接收;注意事项包括字段导出、时间处理、空值忽略及错误检查。

处理 JSON 数据是 Go 语言中非常常见的任务,特别是在开发 Web 应用或 API 接口时。Golang 标准库中的
encoding/json

在实际开发中,我们经常需要将接收到的 JSON 数据转换成 Go 中的结构体(struct),以便于后续操作。
比如有如下 JSON 字符串:
立即学习“go语言免费学习笔记(深入)”;

{
"name": "Tom",
"age": 25,
"email": "tom@example.com"
}我们可以定义一个对应的结构体,并使用
json.Unmarshal
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
func main() {
data := `{"name":"Tom","age":25,"email":"tom@example.com"}`
var user User
err := json.Unmarshal([]byte(data), &user)
if err != nil {
fmt.Println("解析失败:", err)
return
}
fmt.Printf("%+v\n", user)
}几点注意:

反过来,我们也可以把 Go 的结构体数据序列化为 JSON 字符串,用于接口返回或者日志输出。
继续上面的例子:
user := User{
Name: "Jerry",
Age: 30,
Email: "jerry@example.com",
}
jsonData, _ := json.Marshal(user)
fmt.Println(string(jsonData))输出结果就是标准的 JSON 格式:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
{"name":"Jerry","age":30,"email":"jerry@example.com"}如果你希望输出格式更美观,可以使用
json.MarshalIndent
jsonData, _ := json.MarshalIndent(user, "", " ") fmt.Println(string(jsonData))
有时候 JSON 数据结构比较复杂,比如包含嵌套对象或者数组,这时候就需要定义嵌套结构体来匹配。
例如这个 JSON:
{
"name": "Alice",
"hobbies": ["reading", "coding"],
"address": {
"city": "Beijing",
"zip": "100000"
}
}对应的结构体可以这样写:
type Address struct {
City string `json:"city"`
Zip string `json:"zip"`
}
type Person struct {
Name string `json:"name"`
Hobbies []string `json:"hobbies"`
Address Address `json:"address"`
}解析方式与前面一致,只是结构变复杂了而已。
如果遇到不确定结构的 JSON,比如某些字段可能缺失或类型不固定,可以用
map[string]interface{}interface{}var result map[string]interface{}
json.Unmarshal(data, &result)这种方式灵活性高,但牺牲了一定的类型安全性,适合做中间层处理。
time.Time
omitempty
json:"email,omitempty"
Unmarshal
基本上就这些内容了。JSON 处理在 Golang 中虽然不算特别简单,但只要结构清晰、标签写对,其实也挺顺手的。
以上就是怎样用Golang处理JSON数据 解析与生成JSON的完整示例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号