写本地小工具时,有时候只是想把一个结构体或 map 打得好看一点,不用先接日志库。标准库的 json.MarshalIndent 就够用。
环境:Go 1.20+。保存成 marshal-indent-demo.go:
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]any{
"name": "mesh",
"tags": []string{"dev", "tool"},
"ok": true,
}
b, err := json.MarshalIndent(data, "", " ")
if err != nil {
panic(err)
}
fmt.Println(string(b))
}
跑一下:
go run marshal-indent-demo.go
输出会是缩进过的 JSON,临时排查配置、接口 mock 数据这种场景挺顺手。
要注意 map 的 key 顺序别拿来做业务判断;真要稳定快照,最好还是用结构体或者单独整理输出。