使用Spring Boot解析JSON

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GDZLW的頭像GDZLW
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相關推薦

發表回復

登錄後才能評論