为了账号安全,请及时绑定邮箱和手机立即绑定

将 json 解析为值列表

将 json 解析为值列表

holdtom 2022-06-14 09:43:55
我有一个程序需要一些文件并将其转换为 json 格式。我试图将某些键的所有值放入一个列表中,但是,因为 json 文件的格式有一堆多次出现的键,所以我找不到正确的方法。我的 json 文件看起来像这样{    "data": {        "__schema": {            "queryType": {                "fields": [                    {                        "description": "",                        "name": "project"                    },                    {                        "description": "",                        "name": "projectEventFeed"                    },                    {                        "description": "",                        "name": "projectEventFeedFetchMore"                    },                    {                        "description": "",                        "name": "projectRecentEventFeed"                    },                    {                        "description": "",                        "name": "unseenProjectActivityCount"                    },                    {                        "description": "",                        "name": "projectFiles"                    },                    {                        "description": "",                        "name": "projectFilesIdSet"                    },                    {                        "description": "",                        "name": "projectFileMessages"                    },                    }                ]            }        }    }}我的目标是将所有名称值放入一个列表中。在将文件转换为 json 之前,我尝试使用正则表达式来获取它,但失败了。使用json格式我尝试了以下map(lambda parsed_json: parsed_json['data']['__schema']['queryType']['fields']['name'], List)我List从typing但是当我想把地图变成一个列表时,我得到了TypeError: Parameters to generic types must be types. Got 0.从转换。
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以在'fields'从 json 转换的 dict 中的嵌套键上使用列表理解。


d = {"data": {"__schema": {"queryType": {"fields": [{"description": "", "name": "project"}, {"description": "", "name": "projectEventFeed"}, {"description": "", "name": "projectEventFeedFetchMore"}, {"description": "", "name": "projectRecentEventFeed"}, {"description": "", "name": "unseenProjectActivityCount"}, {"description": "", "name": "projectFiles"}, {"description": "", "name": "projectFilesIdSet"}, {"description": "", "name": "projectFileMessages"}, {"description": "", "name": "projectUserStatus"}, {"description": "", "name": "projectFileScribble"}, {"description": "", "name": "user"}, {"description": "", "name": "viewer"}, {"description": "", "name": "profile"}, {"description": "", "name": "site"}, {"description": "", "name": "designers"}, {"description": "", "name": "predictImageCategory"}, {"description": "", "name": "getPortfolioDesign"}]}}}}


fields = [f['name'] for f in d['data']['__schema']['queryType']['fields']]

print(fields)

# ['project', 'projectEventFeed', 'projectEventFeedFetchMore', 'projectRecentEventFeed', 'unseenProjectActivityCount', 'projectFiles', 'projectFilesIdSet', 'projectFileMessages', 'projectUserStatus', 'projectFileScribble', 'user', 'viewer', 'profile', 'site', 'designers', 'predictImageCategory', 'getPortfolioDesign']


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信