我正在编写一个测试,我希望将json.Marshal
的结果与静态json字符串进行比较:
var json = []byte(`{
"foo": "bar"
}`)
由于json.Marshal
没有任何\n
,\t
和空格,我认为我可以很容易地做到:
bytes.Trim(json, " \n\t")
删除所有这些字符。
但不幸的是,这不起作用。我可以写一个自定义修剪函数并使用bytes.TrimFunc
但这对我来说似乎很复杂。
我还能做些什么来让json字符串“压缩”尽可能少的代码?
最佳, 博
答案 0 :(得分:17)
如果JSON字符串中有空格,则使用任何修剪或替换功能都不起作用。您可能会破坏数据,例如,如果您有类似{"foo": "bar baz"}
的内容。
只需使用json.Compact。
这完全符合您的需要,除了它输出到bytes.Buffer
。
var json_bytes = []byte(`{
"foo": "bar"
}`)
buffer := new(bytes.Buffer)
if err := json.Compact(buffer, json_bytes); err != nil {
fmt.Println(err)
}
有关实例,请参阅http://play.golang.org/p/0JMCyLk4Sg。