我从端点检索JSON作为GET响应
response, _ := http.Get("https://website-returning-json-value.com")
data, _ := ioutil.ReadAll(response.Body)
w.Write(data)
它返回给我一个JSON值,可以,但是非常难看(没有缩进等)。我想使它漂亮。我已经读过像MarshalIndent这样的util函数可以完成这项工作,但是它适用于JSON对象(?),ReadAll函数返回[] byte,所以它不起作用。我阅读了有关encoding / json包的文档,但是有很多信息,但我有些困惑/困惑。
据我了解,应该通过ReadAll函数获取[] byte->将其转换为JSON->修饰它->再次变为[] byte。
答案 0 :(得分:3)
有json.Indent()
用于此目的。使用它的示例:
Phone
输出(在Go Playground上尝试):
src := []byte(`{"foo":"bar","x":1}`)
dst := &bytes.Buffer{}
if err := json.Indent(dst, src, "", " "); err != nil {
panic(err)
}
fmt.Println(dst.String())
但是缩进仅适用于人眼,它包含相同的信息,并且库不需要缩进的JSON。
另请参阅:Is there a jq wrapper for golang that can produce human readable JSON output?