我有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";} |