sql >> Database >  >> RDS >> Oracle

JSON parseren in Oracle-tabel met behulp van PL/SQL

Aangezien deze vraag hoog scoort in de resultaten, wil ik dit voorkeursalternatief posten:

Oracle heeft APEX 5.0 uitgebracht (15 april 2015). Hiermee krijg je toegang tot een geweldige API om met JSON te werken

Ik gebruik het op 11.2 en heb elke afzonderlijke json kunnen kraken, van eenvoudige tot zeer complexe objecten met meerdere arrays en 4/5 niveaus. APEX_JSON

Als u APEX niet wilt gebruiken. Installeer eenvoudig de runtime-omgeving om toegang te krijgen tot de API.

Voorbeeldgebruik, gegevens van voorbeeld van json.org :

declare
    sample_json   varchar2 (32767)
        := '{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}';
begin
    apex_json.parse (sample_json);
    dbms_output.put_line (apex_json.get_varchar2 ('glossary.GlossDiv.title'));
    dbms_output.put_line (apex_json.get_varchar2 ('glossary.GlossDiv.GlossList.GlossEntry.GlossTerm'));
    dbms_output.put_line (apex_json.get_varchar2 ('glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso[%d]', 2));
end;

Resultaat:PL/SQL-blok uitgevoerd

S
Standard Generalized Markup Language
XML


  1. Verwijder de vorige markering en voeg een markering toe in de bijgewerkte lat lng

  2. tel datumverschil in uren met php en mysql

  3. PostgreSQL/performance één algemene cursor of maak voor elke query

  4. MYSQL:COUNT met GROUP BY, LEFT JOIN en WHERE-clausule retourneert geen nulwaarden