在處理 JSON 數(shù)據(jù)時,我們通常使用 Jackson 這個開源庫,它提供了很多有用的功能。其中之一就是支持多級 JSON。
{ "name": "Tom", "age": 29, "address": { "city": "Shanghai", "country": "China" }, "phoneNumbers": [ "123456789", "987654321" ] }
上面這個 JSON 數(shù)據(jù)中,除了簡單的屬性外,還包含一個嵌套的對象和一個數(shù)組。對于這種多級 JSON,我們可以采用JsonNode
類型來進行處理。
ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(jsonString);
讀取 JSON 字符串后,我們就可以對其進行操作了。比如獲取某個屬性的值:
JsonNode nameNode = rootNode.get("name"); String name = nameNode.asText();
獲取嵌套對象中的屬性:
JsonNode addressNode = rootNode.get("address"); JsonNode cityNode = addressNode.get("city"); String city = cityNode.asText();
獲取數(shù)組元素:
JsonNode phoneNumbersNode = rootNode.get("phoneNumbers"); if (phoneNumbersNode.isArray()) { for (JsonNode phoneNumber : phoneNumbersNode) { String number = phoneNumber.asText(); // do something with number } }
當然,如果我們知道 JSON 的結構,也可以使用 Java 對象來映射它:
public class Person { public String name; public int age; public Address address; public ListphoneNumbers; } public class Address { public String city; public String country; } ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(jsonString, Person.class);
這樣就可以非常方便地訪問 JSON 數(shù)據(jù)了。Jackson 的多級 JSON 支持為我們的開發(fā)工作帶來了極大的便利。