2013-11-28 10 views
17

Ich schreibe Funktion für eine neue PostgreSQL-Datenbank und ich versuche, über eine verschachtelte Struktur zu durchlaufen.How-to Schleife über JSON-Arrays in Postgresql 9.3

Ist das mit den neuen JSON-Funktionen überhaupt möglich? Was ich versuche, ist hier unten zu tun:

DO 
$BODY$ 
DECLARE 
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]'; 
    i record; 
BEGIN 
    FOR i IN SELECT * FROM json_array_elements(omgjson) 
    LOOP 
    RAISE NOTICE 'output from space %', i; 
    END LOOP; 
END; 
$BODY$ language plpgsql 

Dies gibt eine Reihe von Datensätzen (! Text), das ist nicht JSON! so kann ich es nicht wie i->>'type' abfragen, aber das ist genau das, was ich erreichen will ...

Antwort

36

ich ein wenig dumm war, aber die Dokumentation zu dieser json-Funktion auf postgresql Website ist eigentlich minimal

das Problem zu lösen alles, was ich tat, war

DO 
$BODY$ 
DECLARE 
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]'; 
    i json; 
BEGIN 
    FOR i IN SELECT * FROM json_array_elements(omgjson) 
    LOOP 
    RAISE NOTICE 'output from space %', i->>'type'; 
    END LOOP; 
END; 
$BODY$ language plpgsql 
+0

in der späteren Version von postgresql können Sie jsonb_array_elements verwenden –

Verwandte Themen