java 判断json里面是否包含某个字段 不规则数组json 如果包含 拿出字段的value 并对那个字段进行操作 递归
时间: 2023-08-28 20:03:32 浏览: 62
可以使用Java中的Json库来解析json字符串,然后使用递归方法遍历json对象,判断是否包含某个字段。
以下是一个简单的示例代码:
```java
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonUtils {
/**
* 递归遍历JSON对象
*
* @param obj JSON对象
* @param key 要查找的字段名
* @return 字段的值
*/
public static Object getValue(JSONObject obj, String key) {
if (obj.has(key)) {
return obj.get(key);
} else {
for (String k : obj.keySet()) {
Object value = obj.get(k);
if (value instanceof JSONObject) {
Object result = getValue((JSONObject) value, key);
if (result != null) {
return result;
}
} else if (value instanceof JSONArray) {
for (int i = 0; i < ((JSONArray) value).length(); i++) {
Object result = getValue(((JSONArray) value).getJSONObject(i), key);
if (result != null) {
return result;
}
}
}
}
return null;
}
}
}
```
使用示例:
```java
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
String jsonString = "{\"user\":{\"name\":\"张三\",\"age\":18},\"books\":[{\"name\":\"Java编程思想\",\"price\":69.9},{\"name\":\"Effective Java\",\"price\":59.9}]}";
JSONObject json = new JSONObject(jsonString);
String key = "name";
Object value = JsonUtils.getValue(json, key);
if (value != null) {
System.out.println("找到了字段" + key + ",值为:" + value);
// 对字段进行操作
} else {
System.out.println("未找到字段" + key);
}
}
}
```
这里的json字符串是一个包含了user和books两个字段的json对象,其中books字段是一个数组,每个元素是一个包含了name和price两个字段的json对象。
在main方法中,我们使用JSONObject类将json字符串转换为json对象,然后调用JsonUtils中的getValue方法查找名为"name"的字段。getValue方法使用递归方式遍历json对象,如果找到了指定的字段就返回其值,否则返回null。
最后判断返回的值是否为null,如果不是就对字段进行操作。
阅读全文