2013-11-28 38 views
17

我正在寫一個新的postgreSQL數據庫的函數,我試圖循環一個嵌套結構。如何在JSON數組中循環postgresql 9.3

這是甚至可能與新的JSON功能? 我想要做的是在這裏如下:

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 

這將返回一組記錄(!文本),這不是JSON!所以我不能查詢它像i->>'type',但是這正是我要完成......

回答

36

我有點啞,但對PostgreSQL的網站此JSON功能的文檔實際上是最小的

解決問題我所做的只是

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

在更高版本的postgresql中,您可以使用jsonb_array_elements –