fastjson2/docs/jsonpath_multi.md
2022-11-17 01:16:46 +08:00

37 lines
1.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

对同一个JSON做多个JSONPath求值的场景FASTJSON2提供了专门的API能提升性能如下
```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")};
Object[] evalResult = (Object[]) jsonPath.eval(object);
assertArrayEquals(expected, evalResult);
String jsonStr = object.toString();
Object[] result = (Object[]) jsonPath.extract(jsonStr);
assertArrayEquals(expected, result);
```