猿问

将 json 解析为值列表

我有一个程序需要一些文件并将其转换为 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.


从转换。


holdtom
浏览 129回答 1
1回答

BIG阳

您可以在'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']
随时随地看视频慕课网APP

相关分类

Python
我要回答