자바 JSONPath 를 사용 하여 JSON 의 전체 내용 을 상세 하 게 해석 합 니 다.

JSonPath 는 주어진 JSON 문서 의 일부 내용 을 추출 하 는 간단 한 방법 입 니 다.JSonPath 는 자바 script,Python,PHP,자바 등 많은 프로 그래 밍 언어 를 가지 고 있 습 니 다.
JSonPath 가 제공 하 는 json 해석 은 매우 강력 합 니 다.정규 표현 식 과 유사 한 문법 을 제공 합 니 다.기본적으로 원 하 는 모든 json 내용 을 만족 시 킬 수 있 습 니 다.
maven 에 jar 패키지 추가
JSonPath 는 Central Maven 저장 소 에서 찾 을 수 있 습 니 다.Maven 사용자 가 POM 에 추가 합 니 다.
com.jayway.jsonpath json-path 2.2.0
조작 부호
조작 하 다.
설명 하 다.
$
뿌리 원 소 를 나타 낸다
@
현재 요소
. or []
하위 요소
n/a
부모 요소
*
모든 요 소 를 나타 내 는 마스크
. .
조건 에 맞 는 모든 노드 선택
[]
배열 아래 표 시 된 것 과 같은 교체 기 표시
[,]
연결 조작 자 는 XPath 결과 에 다른 노드 집합 을 합 칩 니 다.JSONP 는 name 이나 배열 색인 을 허용 합 니 다.
[start?step]
배열 절편 조작
?()
필터 식
()
표현 식 계산 지원
함수.
함 수 는 경로 의 끝 부분 에서 호출 할 수 있 습 니 다.함수 의 출력 은 경로 표현 식 의 출력 입 니 다.이 함수 의 출력 은 함수 자체 에 의 해 결 정 됩 니 다.
함수.
묘사 하 다.
출력
min()
디지털 배열 의 최소 값 을 제공 합 니 다.
Double
max()
디지털 배열 의 최대 값 을 제공 합 니 다.
Double
avg()
디지털 배열 의 평균 값 을 제공 합 니 다.
Double
stddev()
디지털 배열 의 표준 편차 값 을 제공 합 니 다.
Double
length()
배열 의 길 이 를 제공 합 니 다.
Integer
필터 연산 자
필 터 는 배열 을 선별 하 는 논리 적 표현 식 입 니 다.전형 적 인 필 터 는[?(@...age>18)],그 중@처리 중인 현재 항목 을 표시 합 니 다.논리 연산 자&&|를 사용 하여 더 복잡 한 필 터 를 만 들 수 있 습 니 다.문자열 문 자 는 작은 따옴표 나 작은 따옴표 로 묶 어야 합 니 다([?(@...color==='blue')]아니면[?(@...color == “blue”)]).
조작 부호
묘사 하 다.
==
left 는 right(주의 1 은'1'이 아 닙 니 다)
!=
같 지 않다
<
...보다 작다
<=
이하
>
...보다 크다
>=
...보다 크다
=~
정규 표현 식[?(@.name =~ /foo.*?/i)]
in
왼쪽 은 오른쪽 에 존재 합 니 다.[?(@...size in [‘S', ‘M'])]
nin
왼쪽 은 오른쪽 에 존재 하지 않 습 니 다.
size
길이
empty
(배열 이나 문자열)이 비어 있 습 니 다.
자바 조작 예시
json 형식의 데이터:

{
	"text": "  ",
	"expensive": 6,
	"body": {
		"rvNoNum": 23,
		"rvNoRecords": [{
			"score": 4,
			"rvAddress": "2",
			"consignments": null
		}, {
			"score": 8,
			"rvAddress": "3",
			"consignments": null
		}]
	}
}
테스트 코드:

private static void jsonPathTest() {
 JSONObject responseJson= jsonTest();//      jsonTest()    json  ,     json
 //  text  
 String text = JsonPath.read(responseJson,"$.text");
 
 //  rvNoNum  
 int rvNoNum = JsonPath.read(responseString,"$.body.rvNoNum");

	//  rvNoRecords    2  
	List<Object> rvNoRecords = JsonPath.read(responseString,"$..rvNoRecords[1]");

	//  rvNoRecords    1  2  
 List<Object> rvNoRecords1 = JsonPath.read(responseString,"$..rvNoRecords[0,1]");

	//  rvNoRecords   score<=expensive    
	List<Object> rvNoRecords2 = JsonPath.read(responseString,"$..rvNoRecords[?(@.score < $['expensive'])]");
	
 //  rvNoRecords[0] rvAddress 
 String rvAddress1 = JsonPath.read(responseJson, "$.body.rvNoRecords[0].rvAddress");
 
 //    rvAddress  ,  Iterator  
 List<String> rvAddress = JsonPath.read(responseJson,"$.body.rvNoRecords[*].rvAddress");
 
 //  rvNoRecords[*] rvAddress== '2' rvNoRecords
 List<Object> rvAddress2 = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.rvAddress == 2)]");  
 
 //  rvNoRecords[*] score>5  rvNoRecords
 List<Object> score = JsonPath.read(responseJson,"$.body.rvNoRecords[?(@.score>5)]");
 
 //  rvNoRecords[*]   consignments   rvNoRecords
 List<Double> consignments = JsonPath.read(responseString,"$.body.rvNoRecords[?(@.consignments)]");
 
 //   json   rvAddress  
 List<Object> rvNoNum2 = JsonPath.read(responseString,"$..rvAddress");
 
 //  rvNoRecords     
 List<Object> length = JsonPath.read(responseString,"$..rvNoRecords.length()");
 
 //          ,      
 JsonPath path = JsonPath.compile("$.body.rvNoRecords[*]");
 List<Object> rvNoRecords3 = path.read(responseString);
}

JSONpath 로 JSON 의 전체 내용 을 해석 하 는 데 관 한 이 글 은 여기까지 소개 되 었 습 니 다.JSONpath 로 JSON 의 전체 내용 을 해석 하 는 데 관 한 자세 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기