Leitura array json - oracle11

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pablo.jose
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Ter, 30 Jun 2009 4:54 pm
Localização: Brusque - SC

Boa tarde mestres.
estou recebendo um json (de uma API de terceiros), agora preciso tratar ela e inserir no banco.
Estava utilizando a seguinte estrutura (que está funcionando):

Selecionar tudo

declare 

  -- Local variables here

   xjson       json_object := json_object( '{"cidadeOrigem":"CIDADE_RETORNO","cidadeDestino":"CACHOEIRINHA","dataSaida":"2023-10-03 -- 19:28","dataChegada":"2023-10-04 -- 15:43"}' ) ;
      
   xkeys       JSON_KEYS ; 
   xdes_coluna varchar2(2000);
   
begin

   -- Test statements here

   xkeys := xjson.get_keys ; 
   
   for i in 1..xkeys.count loop      
         
         --
         
      xdes_coluna := xkeys( i ) ; 
      xdes_coluna := xjson.get( xkeys(i) ).get_string() ; 
      dbms_output.put_line( to_char( xdes_coluna ) ) ;
   end loop;
   
end;
Esse aí de cima, está top, funcionando, porém, agora estou recebendo dados em com array, basicamente assim:

Selecionar tudo

{
   "success": true,
   "message": "Documento localizado com sucesso",
   "header": {
      "remetente": "empresa teste",
      "destinatario": "teste123456"
   },
   "tracking": [
      {
         "data_hora": "2024-01-17T13:05:48",
         "dominio": "VAJ",
         "filial": "TPR",
         "cidade": "CIDADE_NATAL / UF",
         "ocorrencia": "DOCUMENTO DE TRANSPORTE EMITIDO (80)",
         "codigo_ocorrencia": "80",
         "descricao": "CT-e autorizado com 21 volumes e 169 Kg."
      },
      {
         "data_hora": "2024-01-17T13:05:48",
         "dominio": "VAJ22",
         "filial": "TPR22",
         "cidade": "CIDADE_NATAL_22 / UF",
         "ocorrencia": "DOCUMENTO DE TRANSPORTE EMITIDO (80)",
         "codigo_ocorrencia": "81",
         "descricao": "CT-e autorizado com 2221 volumes e 1169 Kg."
      }]
}' 
Para essa situação mostra o erro:
JSON Parser exception @ line: 1 column: = expected string or }
Então assim, se alguém tiver alguma ideia de como tratar um JSON com array no oracle 11g, agradeço.

Grande abraço a todos.
pablo.jose
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Ter, 30 Jun 2009 4:54 pm
Localização: Brusque - SC

Mestres...., depois de algum tempo, percebi que a função que descrevi não é nativa do Oracle 11....mas, sim de um terceiro. Resolvi o meu problema criando uma API (desenvolvida em PHP), passo meus parâmetros e obtenho um array (molezinha).
Para aqueles que querem se aventurar, os objetos estão o github https://github.com/doberkofler/PLSQL-JSON
Esses objetos quebram um galho para coisas simples.
Grande abraço
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Valeu pela solução !
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 14 visitantes