jsonPath

jsonpath '은 JSON 데이터를 쿼리하기 위해 PostgreSQL SQL/JSON 경로 언어에 대한 지원을 구현합니다. 이는 SQL/JSON 쿼리 함수로 추가 처리를 위해 경로 엔진이 JSON 데이터에서 검색할 항목을 지정하는 구문 분석된 SQL/JSON 경로 표현식의 이진 표현을 제공합니다. SQL/JSON 경로 술어 및 연산자의 의미론은 일반적으로 SQL을 따릅니다. SQL/JSON 경로 구문은 일부 JavaScript 규칙을 사용합니다:
  • 회원 액세스에는 점(.)이 사용됩니다.
  • 배열 액세스에는 대괄호([]')가 사용됩니다.
  • SQL/JSON 배열은 0부터 시작하는 일반 SQL 배열과 달리 0 상대 배열입니다(1부터 시작하는 일반 SQL 배열과 대조).
일반적으로 SQL 쿼리에서 SQL/JSON 경로 표현식은 SQL 문자 문자열 리터럴로 작성됩니다. 즉, 경로 표현식은 작은따옴표로 묶어야 합니다. 또한 값 내에 원하는 작은따옴표는 두 배로 늘려야 합니다. 일부 형태의 경로 표현식에는 그 안에 문자열 리터럴이 필요합니다. 내장된 문자열 리터럴은 JavaScript/ECMAScript 규칙을 준수합니다:
  • 큰따옴표로 묶어야 합니다.
  • 백슬래시 이스케이프는 입력하기 어려운 문자를 표현하기 위해 사용할 수 있습니다.
임베디드 문자열 리터럴 내에서 큰따옴표를 얻으려면 ' \" 을 입력해야 합니다. 백슬래시를 얻으려면 ' \\' 을 입력해야 합니다.
기타 특수 백슬래시 시퀀스에는 JSON 문자열에서 인식되는 백슬래시 시퀀스가 포함됩니다:
다양한 ASCII 제어 문자의 경우
  • \b
  • \f
  • \n
  • \r
  • \t
  • \v
4자리 16진수 코드 포인트로 식별되는 유니코드 문자의 경우
  • \uNNNN
백슬래시 구문에는 JSON에서 허용되지 않는 두 가지 대소문자도 포함되어 있습니다:
16진수 두 자리로만 작성된 문자 코드의 경우
  • \xNN
1~6자리 16진수로 작성된 문자 코드의 경우
  • \u{N...}
경로 표현식은 경로 요소의 시퀀스로 구성되며, 다음과 같을 수 있습니다:
  • JSON 기본 유형의 경로 리터럴: 유니코드 텍스트, 숫자, 참, 거짓 또는 null입니다.
  • 경로 변수.
  • 접속자 운영자.
  • 필터 표현식을 제공하거나 경로 평가 순서를 정의하는 데 사용할 수 있는 jsonpath 연산자 및 메서드입니다.

jsonpath 변수

$
쿼리할 JSON 텍스트(컨텍스트 항목)를 나타내는 변수입니다.
이름
명명된 변수입니다. 여러 JSON 처리 함수의 매개변수 ' vars '로 값을 설정할 수 있습니다.
@
필터 표현식에서 경로 평가 결과를 나타내는 변수입니다.

jsonpath 접근자

.key
."$변수명"
지정된 키를 가진 객체 멤버를 반환하는 멤버 접근자입니다. 키 이름이 $로 시작하는 명명된 변수이거나 식별자의 JavaScript 규칙을 충족하지 않는 경우, 문자열 리터럴로 큰따옴표로 묶어야 합니다.
.*
현재 객체의 최상위 레벨에 있는 모든 멤버의 값을 반환하는 와일드카드 멤버 접근자입니다.
.**
현재 객체의 JSON 계층 구조의 모든 레벨을 처리하고 중첩 레벨에 관계없이 모든 멤버 값을 반환하는 재귀 와일드카드 멤버 접근자입니다. 이것은 SQL/JSON 표준의 PostgreSQL 확장입니다.
.**{level}
.**{start_level to end_level}
.**와 동일합니다, 와 비슷하지만 중첩된 JSON 계층 구조 수준에 대한 필터가 있습니다. 중첩 레벨은 정수로 지정됩니다. 0 레벨은 현재 개체에 해당합니다. 가장 낮은 중첩 레벨에 액세스하려면 마지막 키워드를 사용하면 됩니다. 이것은 SQL/JSON 표준의 PostgreSQL 확장입니다.
[아래 첨자, ...]
배열 요소 접근자입니다. subscript '은 ' index ' 또는 ' start_index '에서 ' end_index'까지 두 가지 형태로 지정할 수 있습니다. 첫 번째 양식은 인덱스별로 단일 배열 요소를 반환합니다. 두 번째 양식은 제공된 ' start_index ' 및 ' end_index'에 해당하는 요소를 포함하여 인덱스 범위별로 배열 슬라이스를 반환합니다.
지정된 ' index '은 정수일 수도 있고 단일 숫자 값을 반환하는 표현식일 수도 있으며, 이 경우 자동으로 정수로 형변환됩니다. 0 인덱스는 첫 번째 배열 요소에 해당합니다. 마지막 키워드를 사용하여 마지막 배열 요소를 나타낼 수도 있는데, 이는 길이를 알 수 없는 배열을 처리할 때 유용합니다.
[*]
모든 배열 요소를 반환하는 와일드카드 배열 요소 접근자입니다.

SQL/JSON 경로 언어

XML에 대한 ' SQL ' 액세스에 사용되는 ' XPath 표현식과 유사하게 ' SQL' /JSON 경로 표현식은 ' JSON ' 데이터에서 검색할 항목을 지정합니다.

PostgreSQL, 경로 표현식은 ' jsonpath 데이터 유형으로 구현됩니다. Jsonpath에 설명된 모든 요소를 사용할 수 있습니다.

JSON 쿼리 함수 및 연산자는 제공된 경로 표현식을 경로 엔진에 전달하여 평가합니다. 표현식이 쿼리된 JSON 데이터와 일치하면 해당 SQL/JSON 항목이 반환됩니다.

경로 표현식은 SQL/JSON 경로 언어로 작성됩니다. 여기에는 산술 표현식 및 함수가 포함될 수 있습니다. 쿼리 함수는 이러한 표현식을 텍스트 문자열로 취급하므로 제공된 표현식은 작은따옴표로 묶어야 합니다.

경로 표현식은 ' jsonpath'에서 허용하는 일련의 요소로 구성됩니다. 경로 표현식은 왼쪽에서 오른쪽으로 평가됩니다. 괄호를 사용하여 작업 순서를 변경할 수 있습니다. 평가가 성공하면 SQL/JSON 시퀀스가 생성됩니다. 평가 결과는 지정된 계산을 완료하는 JSON 쿼리 함수에 반환됩니다.

컨텍스트 항목 (쿼리할 JSON 데이터)을 참조하려면 경로 표현식에 ' $ ' 기호를 사용하면 됩니다. 하나 이상의 jsonpath 액세스자가 있는 표지판을 따라갈 수 있습니다. 컨텍스트 항목의 콘텐츠를 검색하기 위해 JSON 구조를 한 단계씩 내려갑니다. 이어지는 각 연산자는 이전 평가 단계의 결과를 처리합니다.

' jsonpath 연산자 및 메서드에 대한 자세한 내용은 jsonpath를 참조하세요