如何从字节数组中删除所有空格,换行符,制表符?

时间:2014-07-16 09:27:45

标签: json go

我正在编写一个测试,我希望将json.Marshal的结果与静态json字符串进行比较:

var json = []byte(`{
    "foo": "bar"
}`)

由于json.Marshal没有任何\n\t和空格,我认为我可以很容易地做到:

bytes.Trim(json, " \n\t")

删除所有这些字符。 但不幸的是,这不起作用。我可以写一个自定义修剪函数并使用bytes.TrimFunc但这对我来说似乎很复杂。

我还能做些什么来让json字符串“压缩”尽可能少的代码?

最佳, 博

1 个答案:

答案 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