นี่แสดงให้เห็นปัญหาอย่าง:
เมื่อคอลัมน์ b เป็นข้อความประเภท แต่ไม่ใช่อาร์เรย์จะทำงานดังต่อไปนี้:
select *
from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}')
as x(a int, b text, d text);
a | b | d
---+--------------------+---
1 | ["hello", "There"] |
แต่ถ้าฉันกำหนดb
คอลัมน์เป็นอาร์เรย์ฉันจะได้รับข้อผิดพลาดนี้:
select *
from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}')
as x(a int, b text[], d text)
ERROR: malformed array literal: "["hello", "There"]"
DETAIL: "[" must introduce explicitly-specified array dimensions.
ฉันจะโน้มน้าว / coerce json_to_record
(หรือjson_populate_record
) เพื่อแปลงอาร์เรย์ JSON เป็นอาร์เรย์ Postgres ของประเภทคอลัมน์เป้าหมายได้อย่างไร