利用FastJson补全缩写jpath路径
时间: 2024-09-24 10:12:30 浏览: 43
fastjson反序列化利用
Fastjson是一个Java语言编写的高性能功能完备的JSON库,它支持将Java对象转换为JSON字符串,也可以将JSON字符串解析成Java对象。对于处理JSON数据结构,特别是动态路径选择,如通过字段名称的缩写(jpath)来访问嵌套的对象或数组,Fastjson提供了一个叫做`com.alibaba.fastjson.JSONPath`的工具类。
当你有一个类似于`$.users[0].name`这样的jpath表达式,你可以使用`JSONPath`类的`evaluate()`方法来获取值。这个方法需要三个参数:JSON对象、jpath表达式和默认值(如果路径不存在时返回的值)。例如:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
String jsonString = "{\"users\":[{\"name\":\"John\", \"age\":30}, {\"name\":\"Jane\", \"age\":25}]}";
JSONObject jsonObject = JSON.parseObject(jsonString);
String fullName = JSONPath.eval(jsonObject, "$.users[0].name"); // 获取第一个用户的名字
```
在这个例子中,`$.users[0].name`就是jpath表达式,它表示从JSON对象的根开始,找到名为`users`的数组的第一个元素,然后取其`name`属性的值。
阅读全文