登录
首页 >  Golang >  Go问答

优雅地打印 JSON 数据使用 Go 的方法

来源:stackoverflow

时间:2024-03-08 19:21:27 290浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《优雅地打印 JSON 数据使用 Go 的方法》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

有人知道在 Go 中漂亮打印 JSON 输出的简单方法吗?

我想漂亮地打印 json.Marshal 的结果,并格式化现有的 JSON 字符串,以便更容易阅读。


正确答案


MarshalIndent 将允许您输出带有缩进和空格的 json。例如:

{
    "data": 1234
}

indent 参数指定要缩进的字符系列。因此, json.marshalindent(data, "", " ") 将使用四个空格进行缩进来进行漂亮的打印。

如果您有一个想要转换为 json 的对象,则接受的答案非常好。这个问题还提到了漂亮打印任何 json 字符串,这就是我想要做的。我只是想从 post 请求(特别是 CSP violation report)中漂亮地记录一些 json。

要使用 marshalindent,您必须将 unmarshal 转换为对象。如果你需要的话,就去吧,但我没有。如果您只需要漂亮地打印字节数组,那么普通的 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()))
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>