자바 JSONPath 를 사용 하여 JSON 의 전체 내용 을 상세 하 게 해석 합 니 다.
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 의 전체 내용 을 해석 하 는 데 관 한 자세 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
안 드 로 이 드 개발 JSon 분석 종류 대전오늘 은 앞에서 쓴 항목 들 을 정리 하고 안 드 로 이 드 가 네트워크 에 접근 하 며 json 전송 값 의 분석 도구 류 를 통 해 전송 과정 에서 사용 하 는 유형 을 보완 했다. 나 는 알 리 바 바 의 fa...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.