jsonPath

jsonpath implementa o suporte para a linguagem de caminho SQL/JSON no PostgreSQL para consultar dados JSON. Fornece uma representação binária da expressão de caminho SQL/JSON analisada que especifica os itens que devem ser recuperados pelo mecanismo de caminho a partir dos dados JSON para processamento posterior com as funções de consulta SQL/JSON. A semântica dos predicados e operadores de caminho SQL/JSON geralmente segue o SQL. A sintaxe do caminho SQL/JSON usa algumas das convenções JavaScript:
  • Um ponto (.) é usado para acesso de membros.
  • Os colchetes ([]) são usados para acessar a matriz.
  • As matrizes SQL/JSON são relativas a 0 (ao contrário das matrizes SQL comuns que começam em 1).
Normalmente, em uma consulta SQL, uma expressão de caminho SQL/JSON é escrita como um literal de cadeia de caracteres SQL. Isso significa que a expressão do caminho deve ser colocada entre aspas simples. Além disso, todas as aspas simples desejadas dentro do valor devem ser duplicadas. Algumas formas de expressões de caminho exigem literais de string dentro delas. Os literais de string incorporados seguem as convenções JavaScript/ECMAScript:
  • Eles devem estar entre aspas duplas.
  • Escapes de barra invertida podem ser usados dentro deles para representar caracteres que, de outra forma, seriam difíceis de digitar.
Para obter uma aspa dupla em uma literal de cadeia de caracteres incorporada, você deve digitar ' \". Para obter uma barra invertida, você deve digitar ' \\.
Outras sequências especiais de barra invertida incluem aquelas reconhecidas em cadeias de caracteres JSON:
Para vários caracteres de controle ASCII
  • \b
  • \f
  • \n
  • \r
  • \t
  • \v
Para um caractere Unicode identificado por seu ponto de código de 4 dígitos hexadecimais
  • \uNNNN
A sintaxe de barra invertida também inclui dois casos não permitidos pelo JSON:
Para um código de caractere escrito com apenas dois dígitos hexadecimais
  • \xNN
Para um código de caractere escrito com 1 a 6 dígitos hexadecimais
  • \u{N...}
Uma expressão de caminho consiste em uma sequência de elementos de caminho, que podem ser:
  • Literais de caminho de tipos primitivos JSON: Texto Unicode, numérico, verdadeiro, falso ou nulo.
  • Variáveis de caminho.
  • Operadores de acessório.
  • operadores e métodos jsonpath, que você pode usar para fornecer expressões de filtro ou definir a ordem de avaliação do caminho.

variáveis jsonpath

$
Uma variável que representa o texto JSON a ser consultado (o item de contexto).
$nome_da_variável
Uma variável nomeada. Você pode definir o valor pelo parâmetro ' vars de várias funções de processamento de JSON.
@
Uma variável que representa o resultado da avaliação do caminho em expressões de filtro.

acessores jsonpath

.chave
."$nome_variável"
Um acessor de membro que retorna um membro de objeto com a chave especificada. Se o nome da chave for uma variável nomeada que começa com $ ou não atender às regras JavaScript de um identificador, ele deverá ser colocado entre aspas duplas como um literal de cadeia de caracteres.
.*
Um acessor de membro curinga que retorna os valores de todos os membros localizados no nível superior do objeto atual.
.**
Um acessor de membro curinga recursivo que processa todos os níveis da hierarquia JSON do objeto atual e retorna todos os valores de membro, independentemente do nível de aninhamento. Essa é uma extensão do PostgreSQL do padrão SQL/JSON.
.**{level}
.**{start_level to end_level}
Igual a .**, mas com um filtro sobre os níveis de aninhamento da hierarquia JSON. Os níveis de aninhamento são especificados como números inteiros. O nível zero corresponde ao objeto atual. Para acessar o nível de aninhamento mais baixo, você pode usar a palavra-chave last. Essa é uma extensão do PostgreSQL do padrão SQL/JSON.
[subscrito, ...]
Um acessor de elemento de matriz. subscript pode ser fornecido de duas formas: " index ou " start_index a " end_index. O primeiro formulário retorna um único elemento da matriz pelo seu índice. O segundo formulário retorna uma matriz dividida pelo intervalo de índices, incluindo os elementos que correspondem ao ' start_index e ao ' end_index fornecidos.
O ' index especificado pode ser um número inteiro, bem como uma expressão que retorna um único valor numérico, que é automaticamente convertido em um número inteiro. O índice zero corresponde ao primeiro elemento da matriz. Você também pode usar a palavra-chave last para indicar o último elemento do array, o que é útil para lidar com arrays de comprimento desconhecido.
[*]
Um acessor de elemento de matriz curinga que retorna todos os elementos da matriz.

A linguagem de caminho SQL/JSON

Da mesma forma que as expressões ' XPath que são usadas para o acesso ' SQL ao XML, as expressões de caminho ' SQL'/JSON especificam quais itens devem ser recuperados dos dados ' JSON.

No PostgreSQL, as expressões de caminho são implementadas como o tipo de dados ' jsonpath. Eles podem usar qualquer elemento descrito em jsonpath.

as funções e operadores de consulta JSON passam a expressão de caminho fornecida para o mecanismo de caminho para avaliação. Se a expressão corresponder aos dados JSON consultados, o item SQL/JSON correspondente será retornado.

As expressões de caminho são escritas na linguagem de caminho SQL/JSON. Elas podem incluir expressões aritméticas e funções. A expressão fornecida deve ser colocada entre aspas simples, pois as funções de consulta tratam essa expressão como uma cadeia de texto.

Uma expressão de caminho é composta de uma sequência de elementos que são permitidos por ' jsonpath. A expressão do caminho é avaliada da esquerda para a direita. Você pode usar parênteses para alterar a ordem das operações. Se a avaliação for bem-sucedida, será produzida uma sequência SQL/JSON. O resultado da avaliação é retornado para a função de consulta JSON que conclui o cálculo especificado.

Para fazer referência ao item de contexto (dados JSON a serem consultados), você pode usar o sinal " $ na expressão de caminho. Você pode seguir o sinal com um ou mais acessores jsonpath. Eles descem a estrutura JSON nível por nível para recuperar o conteúdo do item de contexto. Cada operador que se segue lida com o resultado da etapa de avaliação anterior.

Para obter mais informações sobre os operadores e métodos ' jsonpath, consulte jsonpath