JSONPath 입문 의 Snack 3 편
미니 JSON 프레임
jdk 8, 60kb 기반.직렬 화 된 반 직렬 화, 해석 과 전환, JSon path 조 회 를 지원 합 니 다.
org.noear
snack3
3.1.5.9
Snack 3 차용증
Javascript
의 모든 변 수 는 var
에 의 해 설명 되 고 Xml dom
모든 것 이 Node
의 디자인 이다.그 아래 의 모든 데 이 터 는 ONode
로 ONode
즉 One node
의 뜻 으로 모든 유형 을 대표 하고 모든 유형 으로 전환 할 수 있다.Json path
조회 (호환성 과 성능 짱) 、
JSONPath 문법 소개
설명 하 다.
$
뿌리 원 소 를 나타 낸다
@
현재 노드 (필터 식 의 술어 로 사용)
*
통용 배합 부 호 는 이름 이나 숫자 를 표시 할 수 있다.
..
심층 주사.재 귀적 검색 으로 이해 할 수 있다.
.
자 노드
['' (, '')]
하나 이상 의 키 노드 를 표시 합 니 다.
[ (, )]
하나 이상 의 배열 아래 표 시 를 표시 합 니 다.
[start:end]
배열 세 션, 구간 은 [start, end) 이 고 end (마이너스 가 꼴찌) 는 포함 되 지 않 습 니 다.
[?()]
표현 식 을 걸 러 냅 니 다. 표현 식 결 과 는 불 값 이 어야 합 니 다.
필터 연산 자 지원
설명 하 다.
==
left 는 right (주의 1 은 '1' 이 아 닙 니 다)
!=
같 지 않다
<
... 보다 작다
<=
이하
>
... 보다 크다
>=
... 보다 크다
=~
정규 표현 식 일치 [? (@. name = ~ / foo. *? / i)]
in
왼쪽 은 오른쪽 에 존재 합 니 다. [? (@. size in ['S',' M '])]
nin
왼쪽 은 오른쪽 에 존재 하지 않 습 니 다.
끝 함수 지원
설명 하 다.
min()
숫자 배열 의 최소 값 을 계산 하 다.
max()
숫자 배열 의 최대 값 을 계산 하 다.
avg()
숫자 배열 의 평균 값 을 계산 하 다.
sum()
숫자 배열 의 총 값 을 계산 합 니 다 (새로 추 가 된)
2. JSON 데이터 준비
{
"store": {
"book": [{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
}, {
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}, {
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
}, {
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
데모 코드
@Test
public void demo1(){
final String json = "{\"store\":{\"book\":[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":8.95},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":12.99},{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":8.99},{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":22.99}],\"bicycle\":{\"color\":\"red\",\"price\":19.95}},\"expensive\":10}";
ONode n = ONode.load(json);
ONode t1 = n.select("$.store.book [0].title");
System.out.println("
t1:" + t1);
ONode t2 = n.select("$['store']['book'][0]['title']");
System.out.println("
t2:" + t2);
ONode t3 = n.select("$.store.book[*].author");
System.out.println("
t3:" + t3);
ONode t4 = n.select("$..author");
System.out.println("
t4:" + t4);
ONode t5 = n.select("$.store.*");
System.out.println("
t5:" + t5);
ONode t6 = n.select("$.store..price");
System.out.println("
t6:" + t6);
ONode t7 = n.select("$..book[2]");
System.out.println("
t7:" + t7);
ONode t8 = n.select("$..book[-2]");
System.out.println("
t8:" + t8);
ONode t9 = n.select("$..book[0,1]");
System.out.println("
t9:" + t9);
ONode ta = n.select("$..book[:2]");
System.out.println("
ta:" + ta);
ONode tb = n.select("$..book[1:2]");
System.out.println("
tb:" + tb);
ONode tc = n.select("$..book[-2:]");
System.out.println("
tc:" + tc);
ONode td = n.select("$..book[2:]");
System.out.println("
td:" + td);
ONode te = n.select("$..book[?(@.isbn)]");
System.out.println("
te:" + te);
ONode tf = n.select("$.store.book[?(@.price < 10)]");
System.out.println("
tf:" + tf);
ONode tg = n.select("$..book[?(@.author =~ /.*REES/i)]");
System.out.println("
tg:" + tg);
ONode th = n.select("$..*");
System.out.println("
th:" + th);
ONode ti = n.select("$..book[?(@.price <= $.expensive)]");
System.out.println("
ti:" + ti);
}
4. 콘 솔 출력
t1:"Sayings of the Century"
t2:"Sayings of the Century"
t3:["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
t4:["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
t5:[[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],{"color":"red","price":19.95}]
t6:[8.95,12.99,8.99,22.99,19.95]
t7:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
t8:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
t9:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
ta:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
tb:[{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}]
tc:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
td:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
te:[{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}]
tf:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
tg:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95}]
th:[{"book":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],"bicycle":{"color":"red","price":19.95}},[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99}],{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},"reference","Nigel Rees","Sayings of the Century",8.95,{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99},"fiction","Evelyn Waugh","Sword of Honour",12.99,{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99},"fiction","Herman Melville","Moby Dick","0-553-21311-3",8.99,{"category":"fiction","author":"J. R. R. Tolkien","title":"The Lord of the Rings","isbn":"0-395-19395-8","price":22.99},"fiction","J. R. R. Tolkien","The Lord of the Rings","0-395-19395-8",22.99,{"color":"red","price":19.95},"red",19.95,10]
ti:[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Herman Melville","title":"Moby Dick","isbn":"0-553-21311-3","price":8.99}]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.