JSONPath - 간단 한 입문
xml 의 가장 큰 장점 은 대량의 도구 로 문서 의 데 이 터 를 분석 하고 변환 하 며 선택 적 으로 추출 할 수 있 습 니 다.XPath 는 이 가장 강력 한 도구 중의 하나 이다.
만약 xpath 를 사용 하여 json 을 해석 할 수 있다 면 다음 과 같은 문 제 는 해 결 될 수 있 습 니 다.
1. 데 이 터 는 특별한 스 크 립 트 를 사용 하지 않 고 클 라 이언 트 의 상호작용 을 발견 하고 가 져 올 수 있 습 니 다.
2. 클 라 이언 트 가 요청 한 JSON 데 이 터 는 서버 의 관련 부분 으로 줄 여 서버 응답의 대역 폭 사용률 을 최대한 줄 일 수 있다.
만약 우리 가 원한 다 면, 이 제 이 슨 데 이 터 를 분석 할 수 있 는 도 구 는 의미 가 있 을 것 이다.이에 따 른 문 제 는 어떻게 일 하 느 냐 하 는 것 이다. jsonpath 의 표현 식 이 어떻게 보 이 느 냐 하 는 것 이다.
사실 json 은 c 시스템 프로 그래 밍 언어 로 자연 데 이 터 를 나타 내 고 특정한 언어의 특정한 문법 으로 json 데 이 터 를 방문 합 니 다.
xpath 표현 식:
/store/book[1]/title
우 리 는 다음 과 같이 볼 수 있다.
x.store.book[0].title
혹시
x[‘store’][‘book’][0][‘title’]
Javascript, Python, PHP 의 변수 x 는 json 데 이 터 를 표시 합 니 다.관찰 을 통 해 특정한 언어 에 xpath 가 내장 되 어 데 이 터 를 분석 합 니 다.
질문
- 특정 언어 에 의존
- XPath 1.0 에 의존 해 야 함
- 코드 양 과 메모리 소모 감소
- 운행 중
JOSNPath 표현 식 을 사용 할 수 있 습 니 다. 기 호 는 다음 과 같다.
$.store.book[0].title
기호
$['store']['book'][0]['title']
입력 경 로 를 보면내부 나 출력 경로 가 - 기호 로 바 뀝 니 다.
JSONPath 는 어댑터 * 를 사용 하여 하위 요소 이름과 배열 색인 을 표시 할 수 있 습 니 다.'...' E4X 참조 와 배열 구분 문법 도 사용 할 수 있 습 니 다.
[start:end:step] ECMASCRIPT 4 。
표현 식 은 아래 스 크 립 트 언어 에서 표시 할 이름 이나 색인 을 사용 할 수 있 습 니 다.
$.store.book[(@.length-1)].title
'@' 기 호 를 사용 하여 현재 대상 을 표시 합 니까?() 논리 표현 식 으로 필터 합 니 다.
$.store.book[?(@.price < 10)].title
JSONpath 문법 요소 와 대응 하 는 XPath 요소 의 대 비 를 설명 하 는 표 가 있 습 니 다.
XPath
JSONPath
Description
/
$
뿌리 원 소 를 나타 낸다
.
@
현재 요소
/
. or []
하위 요소
..
n/a
부모 요소
//
..
역귀 하강, JSONPath 는 E4X 에서 참고 한 것 이다.
*
*
모든 요 소 를 나타 내 는 마스크
@
n/a
속성 접근 문자
[]
[]
하위 요소 연산 자
|
[,]
연결 조작 자 는 XPath 결과 에 다른 노드 집합 을 합 칩 니 다.JSONP 는 name 이나 배열 색인 을 허용 합 니 다.
n/a
[start:end:step]
배열 분할 작업 은 ES4 에서 참고 합 니 다.
[]
?()
필터 표현 식 적용
n/a
()
스 크 립 트 표현 식 은 스 크 립 트 엔진 아래 에 사 용 됩 니 다.
()
n/a
Xpath 그룹
XPath 에는 아직도 많은 문법 (로 컬 경로, 연산 자, 함수) 이 여기에 열거 되 어 있 지 않 습 니 다.xpath 와 jsonpath 스 크 립 트 의 차이 점 만 알 면 됩 니 다.
{ "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
}
}
}
XPath
JSONPath
결실
/store/book/author
$.store.book[*].author
모든 책의 저자
//author
$..author
모든 저자
/store/*
$.store.*
store 의 모든 요소.모든 bookst 와 bicycle
/store//price
$.store..price
store 안의 모든 물건 의 price
//book[3]
$..book[2]
세 번 째 책
//book[last()]
$..book[(@.length-1)]
마지막 책
//book[position()<3]
$..book[0,1]
$..book[:2]
앞의 책 두 권.
//book[isbn]
$..book[?(@.isbn)]
isbn 을 포함 하 는 모든 책 을 걸 러 냅 니 다.
//book[price<10]
$..book[?(@.price<10)]
가격 이 10 보다 낮은 책 을 여과 하 다.
//*
$..*
모든 원소.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.