在使用 Go语言 开发过程中,我们经常需要处理 JSON 数据。无论是将结构体序列化为 JSON 字符串,还是解析外部传入的 JSON,encoding/json 包都是最常用的标准库之一。然而,默认情况下,json.Marshal 输出的是紧凑格式(无空格、无换行),不利于阅读和调试。
本文将详细介绍如何使用 Go 语言中的 encoding/json 包对 JSON 进行缩进格式化(也称为“美化”或“pretty print”),让输出结果更清晰易读,即使是编程小白也能轻松掌握!
当你调用 json.Marshal() 时,得到的 JSON 是这样的:
{"name":"Alice","age":30,"hobbies":["reading","coding"]} 虽然机器能正确解析,但人类阅读起来很吃力。而经过缩进格式化后,它会变成:
{ "name": "Alice", "age": 30, "hobbies": [ "reading", "coding" ]} 是不是一目了然?这在调试、日志记录或生成配置文件时非常有用。
Go 的 encoding/json 包提供了一个专门用于格式化输出的函数:json.MarshalIndent。它的函数签名如下:
func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) 参数说明:
v:要序列化的数据(如结构体、map、slice 等)prefix:每行开头的前缀字符串(通常为空字符串 "")indent:缩进使用的字符串(常用 " " 两个空格 或 "\t" 制表符)package mainimport ( "encoding/json" "fmt" "os")type Person struct { Name string `json:"name"` Age int `json:"age"` Hobbies []string `json:"hobbies"`}func main() { p := Person{ Name: "Alice", Age: 30, Hobbies: []string{"reading", "coding"}, } // 使用 MarshalIndent 进行缩进格式化 jsonData, err := json.MarshalIndent(p, "", " ") if err != nil { fmt.Println("Error:", err) return } // 输出到控制台 fmt.Println(string(jsonData)) // 也可以写入文件 os.WriteFile("output.json", jsonData, 0644)} 运行上述代码,你将在终端看到格式化后的 JSON,并且还会在当前目录生成一个 output.json 文件。
如果你希望每一行前面加上特定字符(比如注释符号或嵌套标识),可以用 prefix。例如:
json.MarshalIndent(data, "// ", " ") 输出可能像这样:
// {// "name": "Alice"// } - 使用两个空格:" "(推荐,符合多数 Go 项目风格)
- 使用制表符:"\t"(节省字符,但显示效果依赖编辑器设置)
通过 encoding/json 包中的 MarshalIndent 函数,我们可以轻松实现 Go语言 中 JSON 数据的缩进格式化输出。这不仅提升了开发效率,也让日志和配置文件更具可读性。
记住三个关键词:Go语言、encoding/json、JSON格式化、缩进输出——它们是你掌握这一技巧的核心。
现在,快去试试吧!让你的 JSON 输出从此告别“一行到底”!
本文由主机测评网于2025-12-27发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251213107.html