Is there a JSON schema validator provided by Oracle PL/SQL? Is there a JSON schema validator provided by Oracle PL/SQL? json json

Is there a JSON schema validator provided by Oracle PL/SQL?


You can create a JSON table with a JSON constrained column, and use that.

CREATE TABLE my_json_table (  id RAW(16) NOT NULL,  json_data CLOB,  CONSTRAINT myjson_headers_pk PRIMARY KEY (id),  CONSTRAINT myjson_json_chk CHECK (json_data IS JSON));CREATE OR REPLACE FUNCTION is_json_valid (p_json IN CLOB)RETURN BOOLEAN IS  e_invalid EXCEPTION;  PRAGMA EXCEPTION_INIT (e_invalid, -1000);  PRAGMA AUTONOMOUS_TRANSACTION;BEGIN    INSERT INTO my_json_table (id, json_data)    VALUES (SYS_GUID(), p_json);    ROLLBACK;    RETURN TRUE;EXCEPTION    WHEN e_invalid THEN      RETURN FALSE;END;


There is not a JSON schema validator in Oracle.

But you can think of a workaround.You can build the schema as in XML, parse your JSON to XML and then validate the XML against your schema.

Below you can find how to parse a JSON to XML:

DECLARE  l_json VARCHAR2(32767);  l_xml  XMLTYPE;BEGIN  l_json := '[               {"department_number":10,"department_name":"ACCOUNTING"},               {"department_number":20,"department_name":"RESEARCH"}             ]';  l_xml := APEX_JSON.to_xmltype(l_json );  DBMS_OUTPUT.put_line(l_xml.getClobVal());END;

The output:

<?xml version="1.0" encoding="UTF-8"?><json>    <row>        <department_number>10</department_number>        <department_name>ACCOUNTING</department_name>    </row>    <row>        <department_number>20</department_number>        <department_name>RESEARCH</department_name>    </row></json>

Otherwise you have to go with service validation.