想了解一下怎么解析json数组呢?

[{asd:123,zxc:342,asdg:111},{asd:123,zxc:342,asdg:111},{asd:123,zxc:342,asdg:111}]json_extract(json_extract(aaa,'$[]'),'$[].asd') 不能这样子吗?

展开
收起
雪哥哥 2022-11-08 18:43:16 645 分享 版权
阿里云 AI 助理回答

在阿里云MaxCompute SQL中,如果您想要从JSON数组中提取特定的值,确实可以使用json_extract函数,但是您的表达方式需要调整,因为MaxCompute SQL不直接支持您给出的这种嵌套的JSON路径语法。

假设您有一个表,其中一列名为aaa,存储了您提供的JSON数组。要从每个对象中提取asd的值,您可以使用lateral view explode来展开数组,然后对每个元素应用json_extract。下面是一个示例:

CREATE TABLE test_table (aaa string);

INSERT INTO test_table VALUES ('[{\"asd\":123,\"zxc\":342,\"asdg\":111},{\"asd\":123,\"zxc\":342,\"asdg\":111},{\"asd\":123,\"zxc\":342,\"asdg\":111}]');

SELECT json_extract(value, '$.asd') as asd_value
FROM test_table
CROSS JOIN UNNEST(json_tuple(aaa, 'array')) AS t(array)
CROSS JOIN UNNEST(array) AS value;

这里,我们首先使用json_tuple将整个JSON数组作为单个元素提取出来,然后通过UNNEST操作将其展开为多行,最后用json_extract提取asd字段的值。

请注意,具体的SQL语法可能根据实际使用的数据库或数据处理引擎(如MaxCompute、Hive等)有所不同,因此上述示例需要根据您实际使用的环境进行适当调整。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

数据库领域前沿技术分享与交流

收录在圈子:
+ 订阅
让用户数据永远在线,让数据无缝的自由流动
还有其他疑问?
咨询AI助理