JSONPath - 간단 한 입문

5485 단어
가다
  • JSONPath - xpath 가 json 에서 의 응용 입 니 다.

  • 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 에 의존 해 야 함
    - 코드 양 과 메모리 소모 감소
    - 운행 중
              
  • JSONPath 표현 식
  • JSONpath 는 xpath 표현 식 을 참조 하여 xml 문 서 를 해석 하 는 방식 입 니 다. json 데이터 구 조 는 보통 익명 이 고 루트 요소 가 필요 하지 않 습 니 다.JSONpaht 는 추상 적 인 이름 $로 가장 바깥쪽 대상 을 표시 합 니 다.
    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 스 크 립 트 의 차이 점 만 알 면 됩 니 다.
  • [] xpath 표현 식 은 항상 앞의 경로 에서 배열 을 조작 하고 색인 은 1 부터 시작 합 니 다.
  • JOSNPath 의 [] 연산 자 를 사용 하여 대상 이나 배열 을 조작 하고 색인 은 0 에서 시작 합 니 다.
  • SONPath 예
  • 이어서 jsonpath 가 표시 하 는 예 를 봅 시다.다음은 간단 한 제 이 슨 데이터 구조 가 서점 을 대표 합 니 다. (원본 xml 파일 은)
    { "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 보다 낮은 책 을 여과 하 다.//* $..*
    모든 원소.

    좋은 웹페이지 즐겨찾기