python中的JSON解析(特例)

2024-10-01 00:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的项目收到一条JSON消息,如下所示:

"listinginfo":{
    "438317215072450609":{
        "listingid":"438317215072450609",
        "price":27044,
        "fee":4056,
    },
    "428184115913903011":{
        "listingid":"428184115913903011",
        "price":480,
        "fee":72,
    }
}

在这个json文件中,我想得到“438317215072450609”和“428184115913903011”。 我试过:

myjson.get('listinginfo').get(*).get(listingid)
#and
myjson['listinginfo'][0]['listingid']

但当然,这是行不通的;) 提前谢谢你(很抱歉英语这么差)


Tags: and文件项目json消息getpricefee
2条回答

这些值有两次:一次作为外部dict中的键,一次作为内部dict中的listingid

myjson['listinginfo'].keys()

为了得到第二个,你可以:

[d['listingid'] for d in myjson['listinginfo'].values()]

当然,如果它们总是一样的话,你用哪一个也没关系

首先,您需要用{}包围“JSON”字符串并删除内部对象中的尾随逗号,从而使其成为有效的JSON。我手工编辑字符串,而不是用代码,因为这应该在生成“JSON”的代码中得到修复

myjson = '''{"listinginfo":{
                "438317215072450609":{
                    "listingid":"438317215072450609",
                    "price":27044,
                    "fee":4056
                },
                "428184115913903011":{
                    "listingid":"428184115913903011",
                    "price":480,
                    "fee":72
                }
            }}'''

然后将字符串转换为python数据结构:

import json
data = json.loads(myjson)

然后提取所需内容:

ids = data['listinginfo'].keys()

或者如果ID并不总是对象的键:

ids = [d['listingid'] for d in data['listinginfo'].values()]

相关问题 更多 >