java fastjson 递归解析json 找到指定值
时间: 2024-01-04 16:19:43 浏览: 129
基于java解析JSON的三种方式详解
如果您想在递归解析 JSON 数据时找到指定的值,可以考虑使用递归函数来实现。以下是一个示例代码,可以实现在 JSON 数据中查找指定的值:
```java
import com.alibaba.fastjson.*;
public class JsonParser {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"Jack\",\"age\":29,\"address\":{\"city\":\"New York\",\"zipcode\":\"12345\"}}";
String key = "zipcode";
String result = searchJson(jsonStr, key);
System.out.println(result);
}
public static String searchJson(String jsonStr, String key) {
Object obj = JSON.parse(jsonStr);
if (obj instanceof JSONObject) {
JSONObject jsonObj = (JSONObject) obj;
for (String k : jsonObj.keySet()) {
if (k.equals(key)) {
return jsonObj.getString(k);
} else {
String result = searchJson(jsonObj.get(k).toString(), key);
if (result != null) {
return result;
}
}
}
} else if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) obj;
for (Object arrayObj : jsonArray) {
String result = searchJson(arrayObj.toString(), key);
if (result != null) {
return result;
}
}
}
return null;
}
}
```
在上面的代码中,我们定义了一个 `searchJson` 函数,它接受两个参数:一个是 JSON 字符串,另一个是要查找的键。该函数首先将 JSON 字符串解析为 `Object` 对象,然后判断该对象是 `JSONObject` 还是 `JSONArray`。如果是 `JSONObject`,则遍历该对象的每一个键值对,如果键等于指定的键,则返回对应的值;否则,递归调用 `searchJson` 函数继续查找。如果是 `JSONArray`,则遍历该数组中的每一个元素,递归调用 `searchJson` 函数查找。
在上面的示例代码中,我们查找的是 JSON 数据中的 `zipcode` 值,您可以根据实际需求修改查找的键。
阅读全文