有谁知道在 Go 中漂亮打印 JSON 输出的简单方法?
我想漂亮地打印 json.Marshal
的结果,以及格式化现有的 JSON 字符串,以便于阅读。
原文由 Brad Peabody 发布,翻译遵循 CC BY-SA 4.0 许可协议
有谁知道在 Go 中漂亮打印 JSON 输出的简单方法?
我想漂亮地打印 json.Marshal
的结果,以及格式化现有的 JSON 字符串,以便于阅读。
原文由 Brad Peabody 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您有一个想要转换为 JSON 的对象,那么接受的答案是很好的。这个问题还提到了漂亮地打印任何 JSON 字符串,这就是我想要做的。我只是想从 POST 请求(特别是 CSP 违规报告)中漂亮地记录一些 JSON。
要使用 MarshalIndent
,您必须将 Unmarshal
放入对象中。如果你需要那个,那就去吧,但我没有。如果你只需要漂亮地打印一个字节数组,plain Indent
是你的朋友。
这是我最终得到的:
import (
"bytes"
"encoding/json"
"log"
"net/http"
)
func HandleCSPViolationRequest(w http.ResponseWriter, req *http.Request) {
body := App.MustReadBody(req, w)
if body == nil {
return
}
var prettyJSON bytes.Buffer
error := json.Indent(&prettyJSON, body, "", "\t")
if error != nil {
log.Println("JSON parse error: ", error)
App.BadRequest(w)
return
}
log.Println("CSP Violation:", string(prettyJSON.Bytes()))
}
原文由 robyoder 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
1 回答6k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
MarshalIndent
将允许您输出带有缩进和间距的 JSON。例如:indent
参数指定要缩进的字符系列。因此,json.MarshalIndent(data, "", " ")
将使用四个空格进行缩进。