如何使用golang将多行json转换为一行json?

fle*_*ang 3 json go

如何使用 Go 将多行 json 转换为单行 json?

从:

{
          "release_date": "2004-11-09",
          "status": "retired",
          "engine": "Gecko",
          "engine_version": "1.7"
        }
Run Code Online (Sandbox Code Playgroud)

到:

{"release_date":"2004-11-09","status":"retired","engine":"Gecko","engine_version":"1.7"}

icz*_*cza 15

json.Compact()正是这样做的:

func Compact(dst *bytes.Buffer, src []byte) error
Run Code Online (Sandbox Code Playgroud)

Compact 将 JSON 编码的 src 附加到 dst,并忽略无关紧要的空格字符。

json.Compact()优于再次解组和编组,因为它适用于任何有效的 JSON,并且速度快得多(它不会创建和丢弃 Go 值)。它也优于使用任何正则表达式,同样,它要快得多,并且正则表达式不能完全理解 JSON 语法,因此可能会导致数据丢失。

例如:

func main() {
    dst := &bytes.Buffer{}
    if err := json.Compact(dst, []byte(src)); err != nil {
        panic(err)
    }
    fmt.Println(dst.String())
}

const src = `{
          "release_date": "2004-11-09",
          "status": "retired",
          "engine": "Gecko",
          "engine_version": "1.7"
        }`
Run Code Online (Sandbox Code Playgroud)

这将输出(在Go Playground上尝试):

{"release_date":"2004-11-09","status":"retired","engine":"Gecko","engine_version":"1.7"}
Run Code Online (Sandbox Code Playgroud)