通过jsonb_array_elements将jsonb数组的jsonb项转换为jsonb的postgres数组时,格式



我有jsonb-array:

element_values := '[
{
"element_id": "a7993f3d-9256-4354-a147-5b9d18d7812b", 
"value": true
}, 
{
"element_id": "ceeb364e-bb88-4f41-9c56-9e5f4d0bc1fb", 
"value": None
},
...
]'::JSONB

我想把它转换成jsonb对象数组:JSONB[]

我试过这个方法:

<<elements_n_values_relationship_create>>
DECLARE
elements_n_values_relationship JSONB[];
BEGIN
SELECT * FROM jsonb_array_elements(element_values) INTO elements_n_values_relationship;
...
END;

但是我得到了以下错误:

ERROR:  malformed array literal: "{"value": true, "element_id": "a7993f3d-9256-4354-a147-5b9d18d7812b"}"
DETAIL:  Unexpected array element.

为什么不工作?

你必须使用null来代替None才能使语句正常工作

编辑:在pgadmin或任何SQL客户端中尝试此操作,它按预期工作

select   jsonb_array_elements('[{
"element_id": "a7993f3d-9256-4354-a147-5b9d18d7812b", 
"value": true
}, 
{
"element_id": "ceeb364e-bb88-4f41-9c56-9e5f4d0bc1fb", 
"value": null
}]'::JSONB);
jsonb_array_elements
"{" value";{";value";;;;;;;;;;;;;;
{"value": null "element_id";}