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

标签 json go

我正在编写一个测试,我想将 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/

相关文章:

macos - If 和 else 扰乱了 golang 中的变量作用域

session - Gorilla session 不会在 Golang 中持续存在

javascript - Ajax 请求当前路径请求 `text/html` 而不是 `application/json`

php - 没有数据库的 Zend

go - HTTP 处理程序 - 什么时候应该使用 return?

go - 在 golang 的 map 中使用 string[][] 时复合文字中缺少类型

git - golang 可以从私有(private)颠覆存储库导入包吗?

java - 如何在Java中使用Streaming API解析JSON日志文件,然后输出列表日志文件

javascript - 从 Json 对象中检索数据

arrays - 在基本的 Node/Express 中,有没有办法将 JSON 文件视为 RESTful 资源?