在處理復雜的 JSON 串時,我們一般會選擇使用 Jackson 進行解析。Jackson 是一個開源的 Java 庫,可以快速解析 JSON,同時也是 Spring Boot 框架自帶的 JSON 序列化和反序列化庫。
使用 Jackson 解析復雜 JSON 串需要以下步驟:
ObjectMapper mapper = new ObjectMapper(); // 創建 ObjectMapper 實例
JsonNode rootNode = mapper.readTree(jsonString); // 將 JSON 串解析為 JsonNode 對象
JsonNode valueNode = rootNode.get("key"); // 獲取指定字段的值
其中,ObjectMapper
負責將 JSON 串解析為 Java 對象,JsonNode
是 Jackson 中表示 JSON 對象的類。我們可以通過JsonNode
來獲取 JSON 對象中的具體值。
{
"name": "張三",
"age": 20,
"address": {
"country": "中國",
"province": "江蘇",
"city": "南京"
},
"hobbies": ["reading", "sports"]
}
例如,我們有一個如上所示的 JSON 串。我們可以通過以下代碼獲取其中的某些值:
JsonNode rootNode = mapper.readTree(jsonString);
String name = rootNode.get("name").asText(); // 獲取 name 字段的值
int age = rootNode.get("age").asInt(); // 獲取 age 字段的值
JsonNode addressNode = rootNode.get("address"); // 獲取 address 字段的值
String country = addressNode.get("country").asText(); // 獲取 address 中 country 字段的值
String province = addressNode.get("province").asText(); // 獲取 address 中 province 字段的值
String city = addressNode.get("city").asText(); // 獲取 address 中 city 字段的值
JsonNode hobbiesNode = rootNode.get("hobbies"); // 獲取 hobbies 字段的值
List<String> hobbiesList = new ArrayList<>();
for (JsonNode hobbyNode : hobbiesNode) {
// 遍歷 hobbies 中的數組元素,放入 List 中
hobbiesList.add(hobbyNode.asText());
}
除了上面提到的方法,Jackson 還提供了其他一些解析 JSON 的工具類,如JsonParser
和JsonFactory
。
總的來說,使用 Jackson 解析復雜 JSON 串是非常簡單的。我們只需要利用 Jackson 提供的 API,即可輕松地解析出 JSON 中的各個字段和數值。同時,Jackson 還支持將 Java 對象序列化為 JSON,以及修改已有的 JSON 串。