用IntelliJ IDEA怎么打印JSON数据?多种方法助你高效调试
在Java开发中,JSON数据是前后端交互、API调试、数据处理的核心格式,无论是调试接口返回结果,还是查看中间处理数据,打印JSON数据都是开发中高频操作,IntelliJ IDEA作为主流Java开发工具,提供了多种便捷方法来格式化和打印JSON数据,本文将详细介绍从基础到进阶的多种实现方式,助你高效调试JSON数据。
使用IDEA内置JSON工具:手动格式化+打印(最直接)
如果你只是偶尔需要打印JSON数据,且数据量不大,IDEA内置的JSON格式化工具是最快的选择,操作分为两步:格式化JSON字符串 + 打印输出。
格式化JSON字符串
假设你有一个未格式化的JSON字符串(如从接口返回的原始数据或拼接的字符串),选中后通过IDEA的格式化功能快速美化:
-
操作步骤:
① 选中未格式化的JSON字符串(如{"name":"张三","age":25,"city":"北京","hobbies":["读书","旅行"]}
);
② 按快捷键Ctrl + Alt + L
(Windows/Linux)或Cmd + Option + L
(Mac),或在右键菜单中选择Reformat Code
;
③ IDEA会自动将JSON字符串格式化为易读的缩进形式。 -
示例:
String rawJson = "{\"name\":\"张三\",\"age\":25,\"city\":\"北京\",\"hobbies\":[\"读书\",\"旅行\"]}"; // 选中rawJson,按Ctrl+Alt+L格式化后,效果如下: // { // "name": "张三", // "age": 25, // "city": "北京", // "hobbies": ["读书", "旅行"] // }
打印格式化后的JSON
格式化后,直接通过System.out.println()
或日志框架(如SLF4J)打印即可:
public class JsonPrintDemo { public static void main(String[] args) { String rawJson = "{\"name\":\"张三\",\"age\":25,\"city\":\"北京\",\"hobbies\":[\"读书\",\"旅行\"]}"; // 手动格式化后打印 String formattedJson = "{\n \"name\": \"张三\",\n \"age\": 25,\n \"city\": \"北京\",\n \"hobbies\": [\"读书\", \"旅行\"]\n}"; System.out.println(formattedJson); } }
优点:无需额外依赖,适合临时调试;
缺点:手动格式化麻烦,若JSON数据来自动态生成(如对象转JSON),需先格式化再打印。
使用Gson库:对象转格式化JSON(推荐)
实际开发中,JSON数据常由Java对象转换而来(如实体类、Map等),此时使用Gson、Jackson等库的GsonBuilder
配置格式化输出,更高效且自动化。
添加Gson依赖
若项目未使用Gson,先在pom.xml
(Maven)或build.gradle
(Gradle)中添加依赖:
-
Maven:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
-
Gradle:
implementation 'com.google.code.gson:gson:2.10.1'
使用GsonBuilder
配置格式化打印
Gson默认输出无缩进的JSON,通过GsonBuilder
的setPrettyPrinting()
方法启用格式化,再调用toJson()
转换对象:
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class GsonJsonPrint { public static void main(String[] args) { // 示例1:Map转格式化JSON Map<String, Object> data = new HashMap<>(); data.put("name", "李四"); data.put("age", 30); data.put("hobbies", Arrays.asList("跑步", "摄影")); data.put("address", Map.of("city", "上海", "district", "浦东")); // 创建Gson实例并配置格式化 Gson gson = new GsonBuilder().setPrettyPrinting().create(); String formattedJson = gson.toJson(data); System.out.println("Map转JSON:"); System.out.println(formattedJson); // 示例2:实体类转格式化JSON User user = new User("王五", 28, "深圳", Arrays.asList("编程", "游戏")); String userJson = gson.toJson(user); System.out.println("\n实体类转JSON:"); System.out.println(userJson); } // 实体类 static class User { private String name; private int age; private String city; private String[] hobbies; public User(String name, int age, String city, String[] hobbies) { this.name = name; this.age = age; this.city = city; this.hobbies = hobbies; } // 注意:Gson需要getter方法,此处省略(实际开发中需添加) } }
输出结果:
Map转JSON:
{
"name": "李四",
"age": 30,
"hobbies": ["跑步", "摄影"],
"address": {
"city": "上海",
"district": "浦东"
}
}
实体类转JSON:
{
"name": "王五",
"age": 28,
"city": "深圳",
"hobbies": ["编程", "游戏"]
}
优点:自动化格式化,支持对象/Map/集合等复杂类型;代码简洁,适合日常开发;
缺点:需引入Gson依赖(但多数项目已集成)。
使用Jackson库:企业级JSON处理(Spring Boot默认)
如果你的项目是Spring Boot,默认已集成Jackson库(无需额外依赖),Jackson的ObjectMapper
同样支持格式化输出,且性能更优,适合企业级应用。
使用ObjectMapper
配置格式化
Jackson通过DefaultPrettyPrinter
或enable(SerializationFeature.INDENT_OUTPUT)
启用格式化:
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class JacksonJsonPrint { public static void main(String[] args) throws JsonProcessingException { // 创建ObjectMapper实例 ObjectMapper mapper = new ObjectMapper(); // 启用格式化输出(缩进) mapper.enable(SerializationFeature.INDENT_OUTPUT); // 示例:对象转JSON Map<String, Object> data = new HashMap<>(); data.put("product", "手机"); data.put("price", 4999.0); data.put("tags", Arrays.asList("5G", "拍照", "快充")); String formattedJson = mapper.writeValueAsString(data); System.out.println("Jackson格式化JSON:"); System.out.println(formattedJson); // 示例:JSON字符串转对象(反向操作) String jsonStr = "{\"user\":\"赵六\",\"score\":95.5}"; Map<String, Object> parsedData = mapper.readValue(jsonStr, Map.class); System.out.println("\nJSON字符串转对象:"); System.out.println(parsedData); // 输出:{user=赵六, score=95.5} } }
输出结果:
Jackson格式化JSON:
{
"product" : "手机",
"price" : 4999.0,
"tags" : [ "5G", "拍照", "快充" ]
}
JSON字符串转对象:
{user=赵六, score=95.5}
优点:Spring Boot生态原生支持,性能高,功能强大(支持JSON序列化/反序列化、注解配置等);
缺点:配置稍复杂(需了解ObjectMapper
的SerializationFeature
)。
使用Lombok简化代码:减少样板代码(结合Gson/Jackson)
如果你使用Lombok,可以通过@ToString
注解简化对象打印,但需注意:@ToString
默认输出非JSON格式,若需JSON格式,可结合Lombok的@Builder
和Gson/Jackson实现:
添加Lombok依赖
<!-- Maven --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.28</version> <scope>provided</scope> </dependency>
使用Lombok+Gson简化打印
import com.google.gson.Gson; import com.google.gson.Gson
还没有评论,来说两句吧...