Это потому, что вы использовали json_extract_scalar
вместо json_extract
. json_extract_scalar
возвращает скаляр (не составной, как массив или объект) или NULL, если целью пути json не является скаляр.
Сравните эти выражения. Разница в том, что один использует json_extract_scalar
, а другой json_extract
:
presto> select json_extract_scalar('{"json_array":[{"array_field":"1"}]}', '$.json_array'),
-> json_extract('{"json_array":[{"array_field":"1"}]}', '$.json_array');
_col0 | _col1
-------+-----------------------
NULL | [{"array_field":"1"}]
(1 row)