Python json 해석 라이브러리 jsonpath 원리 및 사용 예시

jsonpath
jsonpath는 여러 층의 json 형식을 끼워 넣는 해석에 사용됩니다.
pip install jsonpath
JsonPath
묘사
$
루트 노드
@
현행 노드
.or[]
하위 노드 가져오기
n/a
부모 노드, jsonpath 지원
..
위치와 상관없이 모든 복합 조건을 선택하는 조건
*
모든 요소 노드 일치
n/a
속성 접근에 따라 json은 지원하지 않습니다. json은 키-value 귀속 구조이기 때문에 속성 접근이 필요하지 않습니다.
[]
교체기 표시(안에서 간단한 교체 조작을 할 수 있다. 예를 들어 수조 아래 표시, 내용에 따라 값을 선택할 수 있다)
[,]
다중 선택 지원
?()
필터링 작업 지원
()
표현식 계산 지원
n/a
그룹, JsonPath는 지원되지 않음
jsonpath 사용 예시

book_dict = { 
 "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
  }
 }
}
JsonPath
Result
$.store.book[*].author
store의 모든 책 작성자
$…author
모든 저자
$.store.*
store 아래의 모든 요소
$.store…price
store의 모든 가격
$…book[2]
세 번째 책
$…book[(@.length-1)]
마지막 책
$…book[0,1]
앞의 두 권의 책을 찾다
$…book[?(@.isbn)]
jsbn이 있는 모든 수를 가져옵니다.
$…book[?(@.price<10)]
획득 가격 10 이상
$…*
모든 데이터 일치
사용 예
$는 루트 노드를 찾습니다. 매개 변수는python의dict 형식입니다. 찾을 때list 결과를 되돌려주고 찾을 때 실패할 때False로 되돌려줍니다.

import jsonpath

result = {
  "code": 0,
  "data": [
    {
      "age": 20,
      "create_time": "2019-09-15",
      "id": 1,
      "mail": "[email protected]",
      "name": "yoyo",
      "sex": "M"
    },
    {
      "age": 21,
      "create_time": "2019-09-16",
      "id": 2,
      "mail": "[email protected]",
      "name": "yoyo111",
      "sex": "M"
    }
  ],
  "msg": "success!"
}

msg = jsonpath.jsonpath(result, '$.msg')
print(msg)  #   ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names)  #   ['yoyo', 'yoyo111']
no = jsonpath.jsonpath(result, '$..yoyo')
print(no)  #   False
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기