当前位置: 首页 > 知识库问答 >
问题:

如何使用Go漂亮地打印JSON?

贾烨
2023-03-14

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

股票 http://golang.org/pkg/encoding/json/软件包似乎不包含此功能 (编辑:是的,请参见公认的答案),快速的谷歌搜索不会发现任何明显的问题。

我正在寻找的用法都是漂亮的打印json的结果。封送,然后格式化来自任何地方的充满JSON的字符串,因此更容易出于调试目的进行读取。

共有3个答案

邹高懿
2023-03-14

为了更好地使用内存,我想这样更好:

var out io.Writer
enc := json.NewEncoder(out)
enc.SetIndent("", "    ")
if err := enc.Encode(data); err != nil {
    panic(err)
}
金骞尧
2023-03-14

如果您有一个想要转换成JSON的对象,那么公认的答案是非常好的。这个问题还提到了漂亮地打印任何JSON字符串,这就是我试图做的。我只是想从POST请求(特别是CSP违规报告)中漂亮地记录一些JSON。

要使用封送缩进,您必须将该缩进解压到对象中。如果你需要它,那就去吧,但我没有。如果你只需要漂亮地打印一个字节数组,plainIndent是你的朋友。

以下是我最终得到的结果:

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()))
}

夏烨霖
2023-03-14

我想你指的是缩进,像这样

{
    "data": 1234
}

而不是

{"data":1234}

最简单的方法是使用MarshalInent,这将允许您指定如何通过indent参数缩进它。因此,json。MarshalInent(数据, "", " ") 将使用四个空格进行缩进。

 类似资料:
  • 问题内容: 有人知道在Go中漂亮地打印JSON输出的简单方法吗? 库存的 http://golang.org/pkg/encoding/json/ 软件包似乎不包含此功能 (编辑:确实如此,请参见接受的答案),而且快速的Google并没有发现任何明显的问题。 我正在寻找的用途既可以打印出JSON 的结果,又可以从任何地方格式化一个充满JSON的字符串,因此出于调试目的而更易于阅读。 问题答案: 通

  • 问题内容: 这似乎是一个已解决的问题,但我无法找到解决方案。 基本上,我读取了一个JSON文件,更改了密钥,然后将新的JSON写回到同一文件。都可以,但是我松了JSON格式,所以,而不是: 我懂了 Node.js中是否可以将格式良好的JSON写入文件? 问题答案: 的第三个参数定义用于漂亮打印的空白插入。它可以是字符串或数字(空格数)。Node可以使用写入您的文件系统。例: 请参阅MDN上的JSO

  • 问题内容: Go中有类似Ruby的东西吗? 例如,在Ruby中,您可以编写: 输出将是: 我能找到的最接近的东西是 问题答案: 如果您的目标是避免导入第三方软件包,则另一个选择是使用json.MarshalIndent: 输出: 工作示例:http : //play.golang.org/p/SNdn7DsBjy

  • 我正在寻找一种漂亮的方法来打印地图。 <代码>贴图。toString()给我:

  • 问题内容: 我有一个字符串,它表示要打印的非缩进XML。例如: 应该变成: 语法高亮不是必需的。为了解决该问题,我首先将XML转换为添加回车符和空格,然后使用pre标记输出XML。为了添加新行和空白,我编写了以下函数: 然后,我像这样调用该函数: 这对我来说很好用,但是当我编写上一个函数时,我认为必须有更好的方法。所以我的问题是,给定XML字符串以将其漂亮地打印在html页面中,您是否知道更好的方

  • 问题内容: 我正在寻找一种漂亮地打印的好方法。 给我: 我希望地图输入值具有更大的自由度,并且正在寻找更多类似这样的东西: 我写了这段代码: 但是我敢肯定,有一种更优雅,更简洁的方法可以做到这一点。 问题答案: 或将您的逻辑放在一个整洁的小班上。 用法: 注意:您也可以将该逻辑放入实用程序方法中。