java 判断json里面是否包含某个字段 不规则数组json 如果包含 对那个字段进行操作 递归
时间: 2023-09-04 11:11:49 浏览: 137
JS中判断JSON数据是否存在某字段的方法
可以使用Java中的JSON库,比如Jackson或者Gson来解析JSON数据。对于判断JSON中是否包含某个字段,可以使用JsonNode对象的has方法。具体实现可以参考下面的代码:
```java
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JsonUtils {
private static final ObjectMapper objectMapper = new ObjectMapper();
public static boolean hasField(JsonNode jsonNode, String fieldName) {
return jsonNode.has(fieldName);
}
public static void operateField(JsonNode jsonNode, String fieldName) {
if (hasField(jsonNode, fieldName)) {
JsonNode fieldNode = jsonNode.get(fieldName);
// 对该字段进行操作
// ...
}
if (jsonNode.isArray()) {
for (JsonNode element : jsonNode) {
operateField(element, fieldName);
}
} else if (jsonNode.isObject()) {
for (JsonNode childNode : jsonNode) {
operateField(childNode, fieldName);
}
}
}
public static void main(String[] args) throws IOException {
String jsonStr = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30,\n" +
" \"cars\": [\n" +
" {\n" +
" \"brand\": \"Ford\",\n" +
" \"model\": \"Mustang\"\n" +
" },\n" +
" {\n" +
" \"brand\": \"Tesla\",\n" +
" \"model\": \"Model S\",\n" +
" \"year\": 2021\n" +
" }\n" +
" ],\n" +
" \"address\": {\n" +
" \"street\": \"123 Main St\",\n" +
" \"city\": \"New York\"\n" +
" }\n" +
"}";
JsonNode rootNode = objectMapper.readTree(jsonStr);
operateField(rootNode, "year");
}
}
```
这里使用了递归来遍历JSON数据的所有节点,如果是一个数组,则对每个元素进行遍历;如果是一个对象,则对每个子节点进行遍历。在遍历过程中,可以通过has方法判断当前节点是否包含目标字段,如果包含则对该字段进行操作。这里只是一个简单的示例,具体的操作需要根据实际需求来实现。
阅读全文