>我有一列包含JSON
对象。我需要从这个对象中提取所有值。问题是键不是固定的并且包含一些 id,所以我无法按确切的键值提取值。下面是一个示例:
{
"1220202132188388": {
"id": "1220202132188388",
"date": "2019-04-03"
},
"482928839992": {
"id": "482928839992",
"date": "2019-04-06"
}
}
所以我想得到一个数组:
[
{
"id": "1220202132188388",
"date": "2019-04-03"
},
{
"id": "482928839992",
"date": "2019-04-06"
}
]
Presto对JSONPath的支持有限,$.*
不起作用。有什么解决方法吗?
您可以将 json 转换为映射并使用map_values函数。
select
map_values(cast(json_parse(c1) as map<varchar, json>))
from
(
values '{
"1220202132188388": {
"id": "1220202132188388",
"date": "2019-04-03"
},
"482928839992": {
"id": "482928839992",
"date": "2019-04-06"
}
}'
) t(c1)
[{"id":"1220202132188388","date":"2019-04-03"}, {"id":"482928839992","date":"2019-04-06"}]