Sql 如何在postgres中将json列表转换为行?

Sql 如何在postgres中将json列表转换为行?,sql,json,postgresql,jsonb,Sql,Json,Postgresql,Jsonb,我有一个返回json列表的查询: select type.value -> 'components' as json_data from manifests m left join jsonb_array_elements(m.json_data->'type') as type on true 这将返回以下数据 [{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}

我有一个返回json列表的查询:

 select type.value -> 'components' as json_data
   from manifests m left join
        jsonb_array_elements(m.json_data->'type') as type on true   
这将返回以下数据

[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]
如果我将其用作以下文本,我可以进一步进行:

 select *
   from jsonb_array_elements(
  '[{"name": "xxx", "version": "1.1"}, {"name": "xxx2", "version": "1.2"}]' ) 
给予

 {"name": "xxx", "version": "1.1"}
 {"name": "xxx2", "version": "1.2"}
但是,如何使用第一个查询达到相同的结果呢?我无法使用子查询使其工作

更新:我的原始数据如下所示:

{
    "lastUpdated": 1569393969656,
    "type": [
        {
            "components": [
                {
                    "name": "xxx",
                    "version": "1.1"
                },
                {
                    "name": "xxx2",
                    "version": "1.2"
                }
            ],
            "description": "xxx"
        }
    ]
}

谢谢

您可以应用
jsonb\u array\u elements()
函数两次:

select jsonb_array_elements(elm) as json_data 
  from
  (
   select jsonb_array_elements(json_data -> 'type') -> 'components' as elm 
     from manifests ) q
能够提取子查询中的相关数组元素


查询执行失败原因:SQL错误[22023]:错误:无法从对象中提取元素我的原始表不包含这样的数据,这已经是转换的结果(请参阅第一个查询)我需要一个使用第一种方法的解决方案query@clairvoyant您能直接分享
json_data
的原始内容吗?我将包裹改为type,以避免给其他人带来任何混乱