Как настроить функцию отступа во время json.Marshal?
Мы разработали "экспортный" API, который позволяет пользователям загружать файл json с информацией. JSON - это массив. Теперь мы сталкиваемся с небольшой дилеммой.
Вызов
json.Marshal
напрямую (без отступов, не очень удобно)
[{"foo":"bar"},{"foo1":"bar1"}]
Вызов
json.MarshalIndent
, или
json.Indent(dst, src, "", " ")
(слишком большой отступ)
[
{
"foo": "bar"
},
{
"foo1": "bar1"
}
]
Я хочу такого рода
[
{"foo": "bar"},
{"foo1": "bar1"}
]
Любые идеи?
1 ответ
Если структура фиксированная, вы можете вручную закодировать ее следующим образом:
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]")
}