一、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"}
原創文章,作者:GDZLW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370487.html