You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:35:24