如何使用Go语言将多行JSON转换为单行JSON
Go语言实现多行JSON转紧凑单行JSON方案
核心实现基于Go标准库encoding/json完成,无需引入第三方依赖,也不会误破坏JSON值内的合法空格、换行内容,稳定性远高于字符串/正则替换的粗暴实现。
实现逻辑
- 先将带缩进、换行、多余空格的多行JSON反序列化为通用结构,过程中会自动忽略所有格式类空白字符
- 再将解析后的结构重新序列化为JSON,默认输出就是无任何多余格式字符的紧凑单行结果
完整示例代码
package main import ( "encoding/json" "fmt" ) func main() { // 待转换的多行带缩进JSON输入 multiLineInput := `{ "release_date": "2004-11-09", "status": "retired", "engine": "Gecko", "engine_version": "1.7" }` // 第一步:反序列化解析JSON,自动过滤格式类空白 var parsedData interface{} if err := json.Unmarshal([]byte(multiLineInput), &parsedData); err != nil { panic(fmt.Sprintf("JSON解析失败: %v", err)) } // 第二步:序列化为紧凑单行JSON singleLineOutput, err := json.Marshal(parsedData) if err != nil { panic(fmt.Sprintf("JSON序列化失败: %v", err)) } // 打印转换结果 fmt.Println(string(singleLineOutput)) }
运行效果
执行上述代码后,控制台输出结果完全符合要求:
{"release_date":"2004-11-09","status":"retired","engine":"Gecko","engine_version":"1.7"}
注意事项
禁止直接使用字符串替换、正则匹配删除空格/换行的方式实现转换:如果JSON的字段值本身包含空格、换行字符,这类粗暴替换会修改原始业务数据,导致JSON内容损坏。基于标准库解析再序列化的方案只会移除JSON结构层面的多余格式字符,会完整保留字段值内的所有合法内容。
内容的提问来源于stack exchange,提问作者flexwang
相关产品推荐
相关产品推荐

