该
encoding/json软件包支持开箱即用的漂亮输出。您可以使用
json.MarshalIndent()。或者,如果您正在使用
json.Enprer,请在调用之前调用其方法
Enprer.SetIndent()(从Go
1.7开始新增)
Enprer.Enpre()。
例子:
m := map[string]interface{}{"id": "uuid1", "name": "John Smith"}data, err := json.MarshalIndent(m, "", " ")if err != nil { panic(err)}fmt.Println(string(data))enc := json.NewEnprer(os.Stdout)enc.SetIndent("", " ")if err := enc.Enpre(m); err != nil { panic(err)}
输出(在Go Playground上尝试):
{ "id": "uuid1", "name": "John Smith"}{ "id": "uuid1", "name": "John Smith"}
如果只想格式化“就绪”
JSON文本,则可以使用以下
json.Indent()功能:
src := `{"id":"uuid1","name":"John Smith"}`dst := &bytes.Buffer{}if err := json.Indent(dst, []byte(src), "", " "); err != nil { panic(err)}fmt.Println(dst.String())
输出(在Go Playground上尝试):
{ "id": "uuid1", "name": "John Smith"}
string这些
indent功能的2个参数是:
prefix, indent string
说明在文档中:
因此,每个换行符均以开头
prefix,后跟0或多个副本
indent,具体取决于嵌套级别。
如果像这样为它们指定值,将变得显而易见:
json.Indent(dst, []byte(src), "+", "-")
使用嵌入式对象对其进行测试:
src := `{"id":"uuid1","name":"John Smith","embedded:":{"fieldx":"y"}}`dst := &bytes.Buffer{}if err := json.Indent(dst, []byte(src), "+", "-"); err != nil { panic(err)}fmt.Println(dst.String())
输出(在Go Playground上尝试):
{+-"id": "uuid1",+-"name": "John Smith",+-"embedded:": {+--"fieldx": "y"+-}+}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)