java 多层json 取值与赋值
时间: 2024-01-30 09:09:02 浏览: 184
在 Java 中,可以使用 JSON 解析库如 Jackson 或 Gson 来解析 JSON 字符串,并进行多层的取值和赋值。
假设有以下 JSON 字符串:
```json
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"country": "USA"
},
"hobbies": [
"reading",
"traveling"
]
}
```
可以使用以下代码来解析 JSON 并取值:
```java
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{...}"; // JSON 字符串
JsonNode jsonNode = mapper.readTree(jsonString);
// 取值
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
String city = jsonNode.get("address").get("city").asText();
String hobby1 = jsonNode.get("hobbies").get(0).asText();
```
可以使用以下代码来进行赋值:
```java
ObjectNode objectNode = mapper.createObjectNode();
// 赋值
objectNode.put("name", "John");
objectNode.put("age", 30);
objectNode.put("city", "New York");
ArrayNode hobbiesNode = objectNode.putArray("hobbies");
hobbiesNode.add("reading");
hobbiesNode.add("traveling");
String jsonString = mapper.writeValueAsString(objectNode);
```
注意,在进行多层 JSON 取值或赋值时,需要先通过 `get` 方法获取到对应的 `JsonNode`,再调用相应的取值或赋值方法。在进行赋值时,需要使用 `ObjectNode` 或 `ArrayNode` 对象来表示 JSON 对象或数组,并使用相应的方法添加属性或元素。
阅读全文