Postgresql 尝试在postgres中插入json时遇到“格式错误的数组文字”

Postgresql 尝试在postgres中插入json时遇到“格式错误的数组文字”,postgresql,stored-procedures,psycopg2,Postgresql,Stored Procedures,Psycopg2,我正试图将一个json对象从我的python代码中通过psycopg2传递到一个postgres存储过程: { "experience": null, "phoneNumber": [ "091184xxx" ], "location": "tehran" } CREATE OR REPLACE FUNCTION data(job_req JSONB) RETURNS VOID AS $$ DECLARE INSERT INTO "JobRequirements"

我正试图将一个json对象从我的python代码中通过psycopg2传递到一个postgres存储过程:

{
  "experience": null,
  "phoneNumber": [
    "091184xxx"
  ],
  "location": "tehran"
}
CREATE OR REPLACE FUNCTION data(job_req JSONB)
  RETURNS VOID
AS $$
DECLARE

INSERT INTO "JobRequirements" (expertise,"phoneNumbers", "location")
  VALUES (
    job_req ->> 'expertise',
    job_req ->> 'phoneNumbers' :: VARCHAR [],
    job_req ->> 'location'
  );
END;
$$ LANGUAGE 'plpgsql';
但这种错误会发生:

错误:数组文字格式错误:PhoneNumber详细信息:数组值 必须以{或维度信息开头

如何修复此错误

更新: 以下是我的存储过程:

{
  "experience": null,
  "phoneNumber": [
    "091184xxx"
  ],
  "location": "tehran"
}
CREATE OR REPLACE FUNCTION data(job_req JSONB)
  RETURNS VOID
AS $$
DECLARE

INSERT INTO "JobRequirements" (expertise,"phoneNumbers", "location")
  VALUES (
    job_req ->> 'expertise',
    job_req ->> 'phoneNumbers' :: VARCHAR [],
    job_req ->> 'location'
  );
END;
$$ LANGUAGE 'plpgsql';

PhoneNumber列的类型为varchar255[]

在插入之前,必须将JSON数组元素提取为文本,并将其转换为VARCHAR数组

CREATE OR REPLACE FUNCTION data(job_req JSONB)
  RETURNS VOID
AS $$
BEGIN
INSERT INTO "JobRequirements" (expertise,"phoneNumbers", "location")
  SELECT 
    job_req ->> 'expertise' ,
     array_agg(d.phonenumber::VARCHAR ) ,
    job_req ->> 'location' 
    FROM jsonb_array_elements_text(job_req->'phoneNumbers') as d(phonenumber);
END;
$$ LANGUAGE plpgsql;

显示从过程运行的insert查询和插入表的定义。我已将它们添加到问题中。如果是,则是错误的。。。