본문 바로가기
카테고리 없음

[JSON] 기본 JsonPath syntax 문법 정리

by dev여름 2024. 6. 3.
반응형

 

 

참고한 글

https://github.com/json-path/JsonPath

 

GitHub - json-path/JsonPath: Java JsonPath implementation

Java JsonPath implementation. Contribute to json-path/JsonPath development by creating an account on GitHub.

github.com

https://goessner.net/articles/JsonPath/

 

JSONPath - XPath for JSON

A frequently emphasized advantage of XML is the availability of plenty tools to analyse, transform and selectively extract data out of XML documents. XPath is one of these powerful tools. It's time to wonder, if there is a need for something like XPath4JSO

goessner.net

그리고 ChatGPT 질의 일부

 

JSONPath - JSON을 위한 XPath

XPath는 XML구문에서 데이터를 용이하게 추출하기 위한 툴이다.

JSONPath는 특별한 코딩 없이 JSON 구조의 데이터에서 정보를 찾고 추출하기 용이하도록 하는 표준화된 도구(쿼리)이다.

JSONPath를 이용해 클라이언트가 서버에 JSON데이터를 요청하면 딱 필요한 부분만 요청이 가능하기 때문에 서버 응답의 대역폭 사용량을 최소화 할 수 있다.

 

 

JSONPath 표현법

JSONPath expression은 

dot 표기법이나

$.store.book[0].title

 

bracket 표기법으로 표현할 수 있다.

$['store']['book'][0]['title']

'$'는 항상 가장 최상단 레벨의 객체를 참조한다.

 

 

JSONPath 연산자

goessner.net의 예시 json데이터와 함께 알아본다.

JSONPath Online Evaluator로 연습하면서 직접 해보니 좀 이해가 되는듯 하다..

{
  "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",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

jsonpath_operator

  • $.store.book[-2] 같은 음수 인덱스 표현은 JSONPath Online Evaluator에서 동작하지 않음. goessner.net 에도 표현되어있지 않음. Java나 Python등 JSONPath 구현 라이브러리에서만 되는 듯 함
  • 배열 인덱스 범위에서는 음수 인덱스 표현 가능

 

JSONPath 필터

필터에서 사용되는 연산자들은 JSONPath를 구현한 언어의 라이브러리에 따라 다를 수 있다.

일반적으로 사용되는 주요 연산자들은 아래와 같다.

정규표현식 매칭 연산자인 '=~' 는 JSONPath구현체마다 지원 여부가 다르다.

많이 사용되는 Java 라이브러리 구현체인 Jayway에서는 지원 된다. (참고)

 

 

JSONPath 구현체 라이브러리에서 지원하는 연산자는 위의 연산자보다 훨씬 더 다양한 연산자를 지원하고 있다.

기본 문법을 바탕으로 각 라이브러리에서 지원하는 필터, 함수, 연산자를 잘 활용하여 데이터를 추출하는 것이 중요할 것 같다.

반응형