Cela illustre bien le problème:
Lorsque la colonne b est de type texte et non un tableau, les opérations suivantes fonctionnent:
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"] |
Mais si je définis la b
colonne comme un tableau, j'obtiens cette erreur:
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.
Comment convaincre / contraindre json_to_record
(ou json_populate_record
) convertir un tableau JSON en tableau Postgres du type de colonne cible?
la source