以下是 Java 解析多层嵌套 JSON 字符串的完整攻略:
1. 解析单层 JSON
首先,我们需要了解如何解析单层 JSON。可以使用 Java 提供的 json 库(如 Jackson、FastJson 等),这里以 Jackson 为例:
// 导入相关包
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
// 将 json 字符串解析成 JsonNode 对象
String jsonStr = "{\"name\":\"张三\",\"age\":18}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonStr);
// 获取 JsonNode 中的值
String name = node.get("name").asText(); // 张三
int age = node.get("age").asInt(); // 18
2. 解析嵌套 JSON
对于嵌套的 JSON,可以逐层解析。假设我们要解析下面这个 JSON 字符串:
{
"name": "张三",
"age": 18,
"address": {
"province": "湖南省",
"city": "长沙市",
"area": {
"name": "岳麓区",
"postcode": "410000"
}
}
}
我们可以通过逐级获取 JsonNode
对象来获取其中的值:
String jsonStr = "{...}"; // 上面的 JSON 字符串
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonStr);
// 获取一级属性的值
String name = node.get("name").asText(); // 张三
int age = node.get("age").asInt(); // 18
// 获取二级属性的值
JsonNode addressNode = node.get("address"); // 获取 address 对应的 JsonNode 对象
String province = addressNode.get("province").asText(); // 湖南省
String city = addressNode.get("city").asText(); // 长沙市
// 获取三级属性的值
JsonNode areaNode = addressNode.get("area"); // 获取 area 对应的 JsonNode 对象
String areaName = areaNode.get("name").asText(); // 岳麓区
String postcode = areaNode.get("postcode").asText(); // 410000
3. 解析嵌套 JSON 数组
如果 JSON 中存在数组的情况,可以先获取数组的 JsonNode
对象,然后遍历其内部的元素:
{
"name": "张三",
"age": 18,
"hobbies": [
"足球",
"篮球",
"游泳"
]
}
String jsonStr = "{...}"; // 上面的 JSON 字符串
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonStr);
// 获取一级属性的值
String name = node.get("name").asText(); // 张三
int age = node.get("age").asInt(); // 18
// 解析数组
JsonNode hobbiesNode = node.get("hobbies");
for (JsonNode hobbyNode : hobbiesNode) {
String hobby = hobbyNode.asText();
System.out.println(hobby);
}
以上就是解析多层嵌套 JSON 字符串的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java解析多层嵌套json字符串问题 - Python技术站