一、Maven依赖
使用Spring Boot处理JSON需要将Jackson依赖加入到项目中,具体内容如下:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
二、解析JSON字符串
在Java中使用Jackson处理JSON数据,可以通过以下两种方式来实现:
1. ObjectMapper
ObjectMapper是Jackson提供的标准JSON数据流的读写工具,可以读入一段JSON数据,并将其转换成Java对象。示例代码如下:
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = "{\"name\":\"Tom\",\"age\":20,\"gender\":\"male\"}";
try {
User user = objectMapper.readValue(jsonStr, User.class);
System.out.println(user);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
其中,User类包含了三个属性:name、age、gender,同时要在类中添加对应的getter和setter方法。
2. JsonNode
JsonNode是Jackson提供的一种兼容性极强的JSON解析库,它提供了一种轻量级、高效的处理JSON数据的方式,同时允许使用者通过Java API来访问JSON数据的各种元素。示例代码如下:
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "{\"book\":{\"title\":\"Java编程思想\",\"author\":\"Bruce Eckel\",\"price\":108}}";
try {
JsonNode rootNode = objectMapper.readTree(jsonString);
JsonNode bookNode = rootNode.get("book");
String title = bookNode.get("title").asText();
String author = bookNode.get("author").asText();
int price = bookNode.get("price").asInt();
System.out.println("Title: " + title);
System.out.println("Author: " + author);
System.out.println("Price: " + price);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
三、解析JSON文件
在实际开发中,经常需要读取JSON文件,并将其中的数据转换成Java对象。这时候,使用ObjectMapper可以快速地实现这个功能。示例代码如下:
ObjectMapper objectMapper = new ObjectMapper();
try {
File file = new File("src/main/resources/user.json");
User user = objectMapper.readValue(file, User.class);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
}
注意,这里需要先将JSON文件中的数据读取出来,再使用ObjectMapper将其转换成Java对象。
四、生成JSON数据
在使用Spring Boot开发Web应用时,返回给客户端的数据大多是JSON格式的数据。以下是两种常见的方式来生成JSON数据。
1. 使用Map构造JSON对象
Map可以用来构造JSON对象,通过在Map中加入键值对来表示JSON对象中的属性和属性值。示例代码如下:
Map<String, Object> map = new HashMap<>();
map.put("name", "Tom");
map.put("age", 18);
map.put("gender", "male");
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(map);
运行上述代码后,得到的JSON字符串如下:
{"name":"Tom","age":18,"gender":"male"}
2. 直接生成JSON String
当我们需要处理一些比较复杂的JSON数据时,另一个常见的方法是使用Jackson提供的JsonGenerator,直接生成JSON数据字符串。示例代码如下:
StringWriter writer = new StringWriter();
JsonGenerator generator = new JsonFactory().createGenerator(writer);
generator.writeStartObject();
// add properties to object...
generator.writeStringField("name", "Tom");
generator.writeNumberField("age", 18);
generator.writeStringField("gender", "male");
generator.writeEndObject();
generator.close();
String json = writer.toString();
运行上述代码后,得到的JSON字符串如下:
{"name":"Tom","age":18,"gender":"male"}