Como trabalhar com JSON no PL/SQL com objetos

Escrever um JSON no Oracle pode ser demorado e massante, mas vamos mostrar como trabalhar com JSON no PL/SQL de maneira otimizada, orientada a objeto.

[ad#texto]

Como trabalhar com JSON no PL/SQL
Como trabalhar com JSON no PL/SQL

Imagine ter que escrever um JSON como uma string dentro de uma procedure PL/SQL, muito massante. Mas vamos mostrar como trabalhar com JSON no PL/SQL orientado a objeto.

Será apenas necessário compilar uma package no seu banco Oracle e pronto.

O interessante é que você pode converter um objeto automaticamente em uma String formatada como JSON e também fazer o processo inverso, convertendo a String formatada como JSON no objeto.

[ad#texto]

Como trabalhar com JSON no PL/SQL: compilar a package

O primeiro passo é realizar o download da package no site da biblioteca Librairie-JSON.

Basta descompactar o arquivo ZIP e compilar no seu banco Oracle os arquivos “JSON.pks” e “JSON.pkb”.

Após compilar é interessante ajustar o package criado para que o JSON criado utilize aspas duplas ao invés de aspas simples (sinceramente não sei o motivo do desenvolvedor da API ter feito assim).

Para realizar o ajuste basta editar a package criada com a seguinte alteração:

--g_stringDelimiter      varchar2(1) := '''';
g_stringDelimiter      varchar2(1) := '"';

Resumindo, basta comentar a primeira linha, que é a original e depois criar uma cópia alterando as aspas utilizadas.

Como trabalhar com JSON no PL/SQL: trabalhando com a API

Com esta API podemos trabalhar na conversão direta de objetos em JSON e vice-versa, muito similar como fazemos em Java, por exemplo.

Abaixo vou mostrar um trecho de código simples onde criamos alguns objetos e montamos um JSON de maneira bem simples.

-- Ativar o output para vermos o resultado
SET SERVEROUT ON

declare -- Declarar dois objetos para trabalharmos com um JSON dentro de outro jsonObject JSON.JSONStructObj; jsonDetail JSON.JSONStructObj;
-- String que irá receber o JSON formatado em String jsonString varchar2(32000);

begin -- Criar objetos que serão persistidos em JSON JSON.newJSONObj(jsonObject); JSON.newJSONObj(jsonDetail);

-- Cria um JSON de detalhes com seus atributos jsonDetail := JSON.addAttr(jsonDetail, 'numeroPedido', 99999999); jsonDetail := JSON.addAttr(jsonDetail, 'artigo', 'P');
-- Fecha a escrita no objeto JSON.closeJSONObj(jsonDetail);
-- Cria um JSON principal com seus atributos jsonObject := JSON.addAttr(jsonObject, 'tipo', 'VENDA'); jsonObject := JSON.addAttr(jsonObject, 'detalheItem', jsonDetail);
-- Fecha a escrita no objeto JSON.closeJSONObj(jsonObject);
-- Converte objeto em String formatada em JSON jsonString := JSON.JSON2String(jsonObject);
-- Escrever a String no console para vermos o resultado dbms_output.put_line(jsonString);

end;

Com tudo correndo bem você receberá no console o seguinte JSON:

{ "tipo" : "VENDA", "detalheItem" : 
{ "numeroPedido" : 99999999, "artigo" : "P" } }

Notaram a facilidade? A própria API se encarrega de gerar os níveis e demais detalhes do JSON, inclusive é possível criar arrays dentro do seu JSON.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.