Java中如何用Jackson将格式化JSON转回单行紧凑格式?
将格式化JSON转回紧凑单行格式的方法
嗨,这事儿其实挺简单的,你平时用的Jackson和GSON这两个工具都能轻松搞定这个需求,我给你分别拆解具体实现方式:
使用Jackson实现
Jackson默认生成的就是紧凑格式的JSON,只要关闭它的缩进输出功能就行。步骤很清晰:
- 先把格式化后的JSON字符串解析成Java对象;
- 配置ObjectMapper禁用缩进输出;
- 再把Java对象序列化为紧凑格式的JSON字符串。
代码示例:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class JsonCompactConverter { public static void main(String[] args) throws Exception { // 你的格式化JSON字符串 String prettyFormattedJson = "{ \"a\": \"b\", \"c\": \"d\" }"; ObjectMapper mapper = new ObjectMapper(); // 解析格式化JSON为Java对象 Object jsonData = mapper.readValue(prettyFormattedJson, Object.class); // 关闭缩进输出,启用紧凑模式 mapper.disable(SerializationFeature.INDENT_OUTPUT); String compactJson = mapper.writeValueAsString(jsonData); System.out.println(compactJson); // 输出结果: {"a":"b","c":"d"} } }
使用GSON实现
GSON的逻辑类似,只要你创建Gson实例的时候不要调用setPrettyPrinting(),它默认就会生成紧凑格式的JSON。具体代码如下:
import com.google.gson.Gson; public class GsonCompactConverter { public static void main(String[] args) { String prettyFormattedJson = "{ \"a\": \"b\", \"c\": \"d\" }"; // 直接创建基础Gson实例,不要加美化配置 Gson gson = new Gson(); // 解析格式化JSON为Java对象 Object jsonData = gson.fromJson(prettyFormattedJson, Object.class); // 序列化为紧凑格式 String compactJson = gson.toJson(jsonData); System.out.println(compactJson); // 输出结果: {"a":"b","c":"d"} } }
小提醒
别想着自己写个正则或者字符串替换去删空格换行,虽然看起来简单,但很容易踩坑——比如JSON字符串值里的空格是需要保留的,手动处理很容易误删。用专业的JSON库处理才是最稳妥的方式。
内容的提问来源于stack exchange,提问作者malana
相关产品推荐
相关产品推荐

