在Java中解析JSON是一項很常見的任務(wù),特別是當JSON中包含嵌套的值時,會讓任務(wù)變得更具挑戰(zhàn)性。本文將討論如何在Java中解析嵌套JSON值。
假設(shè)有如下JSON字符串:
{ "name": "John Doe", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "zip": "12345" } }
要獲取嵌套在address對象中的值,我們可以使用Java中的JSON解析庫,如Jackson或Gson。下面是使用Jackson庫的示例代碼:
ObjectMapper objectMapper = new ObjectMapper(); String json = "{\"name\": \"John Doe\",\"age\": 30,\"address\": {\"street\": \"123 Main St\",\"city\": \"Anytown\",\"state\": \"CA\",\"zip\": \"12345\"}}"; JsonNode rootNode = objectMapper.readTree(json); JsonNode addressNode = rootNode.get("address"); String streetValue = addressNode.get("street").asText(); String cityValue = addressNode.get("city").asText(); String stateValue = addressNode.get("state").asText(); String zipValue = addressNode.get("zip").asText();
以上代碼使用ObjectMapper類將JSON字符串轉(zhuǎn)換為JsonNode對象。然后,我們使用獲取的JsonNode對象獲取address對象。最后,我們獲取address對象中嵌套的值,獲取方式是使用get()方法獲取相應(yīng)的JsonNode對象,然后使用asText()方法,將其轉(zhuǎn)換為字符串。
同樣地,使用Gson庫解析JSON也是類似的。以下是使用Gson庫的示例代碼:
Gson gson = new Gson(); String json = "{\"name\": \"John Doe\",\"age\": 30,\"address\": {\"street\": \"123 Main St\",\"city\": \"Anytown\",\"state\": \"CA\",\"zip\": \"12345\"}}"; JsonElement jsonElement = gson.fromJson(json, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); JsonObject addressObject = jsonObject.getAsJsonObject("address"); String streetValue = addressObject.get("street").getAsString(); String cityValue = addressObject.get("city").getAsString(); String stateValue = addressObject.get("state").getAsString(); String zipValue = addressObject.get("zip").getAsString();
以上代碼使用Gson類將JSON字符串轉(zhuǎn)換為JsonElement對象,然后獲取JsonElement對象中的JsonObject對象和嵌套在其中的值。同樣地,我們可以使用get()方法獲取相應(yīng)的JsonElement對象,然后使用getAsString()方法將其轉(zhuǎn)換為字符串。