fastjson2/docs/jsonpath_multi.md

37 lines
1.1 KiB
Markdown
Raw Normal View History

2022-11-17 01:16:46 +08:00
对同一个JSON做多个JSONPath求值的场景FASTJSON2提供了专门的API能提升性能如下
2022-11-16 13:58:27 +08:00
```java
public class JSONPath {
public static JSONPath of(String[] paths, Type[] types) {
return of(paths, types, null, null);
}
public static JSONPath of(
String[] paths,
Type[] types,
String[] formats,
ZoneId zoneId,
JSONReader.Feature... features
);
}
```
这样构造的JSONPath在eval或者extract方法执行时会返回和types类型匹配的对象数组。
```java
JSONObject object = JSONObject.of("id", 1001, "name", "DataWorks", "date", "2017-07-14");
JSONPath jsonPath = JSONPath.of(
new String[]{"$.id", "$.name", "$.date"},
new Type[]{Long.class, String.class, Date.class}
);
Object[] expected = new Object[]{1001L, "DataWorks", DateUtils.parseDate("2017-07-14")};
2022-11-17 01:16:46 +08:00
Object[] evalResult = (Object[]) jsonPath.eval(object);
assertArrayEquals(expected, evalResult);
2022-11-16 13:58:27 +08:00
String jsonStr = object.toString();
Object[] result = (Object[]) jsonPath.extract(jsonStr);
assertArrayEquals(expected, result);
```