我正在编写一个测试,我想将 json.Marshal
的结果与静态 json 字符串进行比较:
var json = []byte(`{
"foo": "bar"
}`)
由于 json.Marshal
没有任何 \n
、\t
和空格,我认为我可以轻松做到:
bytes.Trim(json, " \n\t")
删除所有这些字符。
但是不幸的是,这不起作用。我可以编写自定义修剪函数并使用 bytes.TrimFunc
但这对我来说似乎很复杂。
我还能做些什么来用尽可能少的代码“压缩”json 字符串?
最好的, 博
最佳答案
如果 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一个活生生的例子。
关于json - 如何从字节数组中删除所有空格、换行符、制表符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24777101/