-1

我们设计了一个“导出”API,使用户能够下载包含信息的 json 文件。json 是一个数组。现在我们遇到了一个小难题。

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

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

调用json.MarshalIndent,或json.Indent(dst, src, "", " ")(缩进太多)

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

我想要这种

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

有任何想法吗?

4

1 回答 1

0

如果结构是固定的,您可以手动对其进行编码,如下所示:

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]")
}
于 2021-08-11T01:46:24.173 回答