Fastjson JSONPath
1. JSONPath 소개
fastjson 1.2.0 이후 버전은 JSONPath를 지원합니다. 이는 Java 프레임워크에서 OQL(Object Query Language)로 사용할 수 있는 매우 강력한 기능입니다.
2.API
package com.alibaba.fastjson; public class JSONPath { // 求值,静态方法 public static Object eval(Object rootObject, String path); // 计算Size,Map非空元素个数,对象非空元素个数,Collection的Size,数组的长度。其他无法求值返回-1 public static int size(Object rootObject, String path); // 是否包含,path中是否存在对象 public static boolean contains(Object rootObject, String path) { } // 是否包含,path中是否存在指定值,如果是集合或者数组,在集合中查找value是否存在 public static boolean containsValue(Object rootObject, String path, Object value) { } // 修改制定路径的值,如果修改成功,返回true,否则返回false public static boolean set(Object rootObject, String path, Object value) {} // 在数组或者集合中添加元素 public static boolean array_add(Object rootObject, String path, Object... values); }
평가 성능을 향상시킬 수 있도록 JSONPath 객체를 캐시하는 것이 좋습니다.
3. 지원 구문
JSONPATH | Description | |||||||||||
$ | 루트 개체(예: $.name | |||||||||||
[num] | number) 그룹 액세스(여기서 num은 다음과 같습니다) 숫자, 음수일 수 있습니다. 예를 들어 $[0].leader.departments[-1].name | |||||||||||
[num0,num1,num2...] | 배열의 여러 요소에 액세스합니다. 여기서 num은 숫자입니다. 음수를 반환하고 다중 요소를 반환합니다. 예를 들어 $[0,3,-2,5] | |||||||||||
[start:end] | 배열 범위 액세스. 여기서 시작과 끝은 시작하는 작은 테이블이고 끝 첨자는 음수일 수 있고 반환될 수 있음 배열 요소에 여러 개의 숫자가 있습니다. 예를 들어 $[0:5] | |||||||||||
[start:end :step] | 배열 범위 액세스. 여기서 start와 end는 시작하는 작은 테이블이고 끝나는 첨자는 음수가 될 수 있습니다. step은 단계입니다. 크기를 지정하고 여러 요소를 반환합니다. 예를 들어 $[0:5:2] | |||||||||||
[?(key)] | Object 속성이 null이 아닌 필터링(예: $.departs[?(name)] | |||||||||||
[key > ] | 숫자 값 유형 객체 속성 비교 필터링(예: $.departs[id >= 123], 비교 연산자 지원 =,!=,>,>=,<,<= | |||||||||||
[ key = '123' [ key like 'aa%'] | 필터링과 같은 문자열 유형, | 예를 들어 $.departs[name like 'sz*'], 와일드카드는 %|||||||||||
[key rlike 'regexpr'] 문자열 유형 정규 일치 필터링, | 예: Departments[name like 'aa(.)*'], ||||||||||||
[key in (' v0', 'v1') ] IN 필터링, 문자열 및 숫자 유형 지원 | 예: ||||||||||||
[234와 456 사이의 키] BETWEEN 필터링, 숫자 유형 지원, | 사이가 아닌 지원예: ||||||||||||
length() 또는 size() 배열 길이. 예를 들어 $.values.size() | 는 java.util.Map 및 java.util.Collection 유형을 지원하고 $.name||||||||||||
.. | deepScan 속성과 같은 배열 | |||||||||||
. | 속성 액세스를 지원합니다. 액세스(예: $..name | |||||||||||
* | $.leader.* | |||||||||||
['key'] | 와 같은 개체의 모든 속성) 속성 액세스입니다. 예를 들어 $['name'] | |||||||||||
['key0','key1'] | 다중 속성 액세스. 예를 들어 $['id','name'] | |||||||||||
다음 두 가지 쓰기 방법은 동일한 의미를 갖습니다: $.store.book[0].title 및 $['store']['book'][0]['title'] 4 . 구문 예
#🎜 🎜 ## 🎜 🎜#5.2 예 2#🎜🎜 #5.3 예 3 컬렉션의 여러 요소 반환5.4 예 4 범위별로 컬렉션의 하위 집합 반환5.5 예 5#🎜🎜 ##🎜 🎜# 집합의 하위 집합을 반환하려면 조건으로 필터링
|