如何在json.Marshal期间自定义缩进功能?



我们设计了一个"出口";API,允许用户下载包含信息的json文件。json是一个数组。现在我们有点进退两难了。

直接调用json.Marshal(没有缩进,不太友好)

[{"foo":"bar"},{"foo1":"bar1"}]

Calljson.MarshalIndent, orjson.Indent(dst, src, "", " ")(too much缩进)

[
{
"foo": "bar"
},
{
"foo1": "bar1"
}
]

我想要这种

[
{"foo": "bar"},
{"foo1": "bar1"}
]

任何想法?

如果结构是固定的,您可以像这样手动编码:

func MarshalArray(in []Obj, out io.Writer) {
io.WriteString(out,"[")
for i,x:=range in {
if i>0 {
out.Write([]byte(","))
}
io.WriteString("n  ")
data,_:=json.Marshal(x)
io.Write(data)
}
io.WriteString(out,"n]")
}

最新更新