Presto unnest json

Lio*_*ber 5 json hadoop hive presto

跟随这个问题:如何在 presto 中交叉连接取消嵌套 json 数组

我尝试运行提供的示例,但在执行此操作时出现错误

SQL命令:

select x.n
from
unnest(cast(json_extract('{"payload":[{"type":"b","value":"9"}, 
{"type":"a","value":"8"}]}','$.payload') as array<varchar>)) as  x(n)
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Value cannot be cast to array<varchar> java.lang.RuntimeException: java.lang.NullPointerException: string is null

小智 5

SELECT JSON_EXTRACT('{"payload":[{"type":"b","value":"9"}, {"type":"a","value":"8"}]}','$.payload')

给出:

[{"type":"b","value":"9"}, {"type":"a","value":"8"}]

这是ARRAY<MAP<VARCHAR,VARCHAR>>. 您可以将查询更改为: SELECT x.n FROM UNNEST (CAST(JSON_EXTRACT('{"payload":[{"type":"b","value":"9"},{"type":"a","value":"8"}]}','$.payload') AS ARRAY<MAP<VARCHAR, VARCHAR>>)) AS x(n)