Java中如何编写或输出多行JSON?其他JSON库是否支持?
在Java中生成多行格式化JSON的实现方法
Java完全可以生成带缩进的多行JSON,json-simple库本身确实没有内置的格式化输出功能,但可以通过更换成熟的JSON库或简单的兼容处理来实现,以下是几种可行方案:
1. 使用Gson库实现格式化输出
Gson是Google推出的轻量JSON处理库,支持一键生成格式化的多行JSON。
示例代码:
import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class JsonFormatDemo { public static void main(String[] args) { // 构建测试数据对象 User testUser = new User("张三", 25, "zhangsan@example.com"); // 创建启用格式化的Gson实例 Gson prettyGson = new GsonBuilder().setPrettyPrinting().create(); // 生成多行JSON字符串 String formattedJson = prettyGson.toJson(testUser); System.out.println(formattedJson); } // 测试实体类 static class User { private String name; private int age; private String email; public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; } } }
执行后输出的格式化JSON:
{ "name": "张三", "age": 25, "email": "zhangsan@example.com" }
2. 使用Jackson库实现格式化输出
Jackson是Java生态中应用广泛的JSON处理框架,同样支持便捷的格式化输出。
示例代码:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class JacksonFormatDemo { public static void main(String[] args) throws Exception { User testUser = new User("李四", 30, "lisi@example.com"); ObjectMapper mapper = new ObjectMapper(); // 启用缩进格式化 mapper.enable(SerializationFeature.INDENT_OUTPUT); String formattedJson = mapper.writeValueAsString(testUser); System.out.println(formattedJson); } static class User { private String name; private int age; private String email; public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; } // Jackson需要实体类提供getter方法,或使用Lombok的@Data注解简化 public String getName() { return name; } public int getAge() { return age; } public String getEmail() { return email; } } }
3. 兼容json-simple的格式化方案
如果必须继续使用json-simple,可以借助org.json库的工具类来实现格式化:
import org.json.JSONObject; import org.json.JSONTokener; import org.json.simple.JSONObject; public class JsonSimpleCompatDemo { public static void main(String[] args) { // 用json-simple构建JSON对象 org.json.simple.JSONObject simpleJson = new org.json.simple.JSONObject(); simpleJson.put("name", "王五"); simpleJson.put("age", 28); simpleJson.put("email", "wangwu@example.com"); // 转换为org.json的JSONObject并格式化输出(缩进参数为4) JSONObject formattedJson = new JSONObject(new JSONTokener(simpleJson.toJSONString())); System.out.println(formattedJson.toString(4)); } }
注意此方案需要同时引入json-simple和org.json两个依赖。
总结
推荐优先使用Gson或Jackson这类成熟库,它们不仅内置格式化功能,还提供更丰富的JSON序列化/反序列化能力,比json-simple更适合实际开发场景。
内容的提问来源于stack exchange,提问作者Kristaps Ālmanis
相关产品推荐
相关产品推荐

