Python 如何解析此JSON响应以仅获取字段的子集?
我正试图解析它,以便只获取名称和机器人id 我使用了json.loads并做了如下操作Python 如何解析此JSON响应以仅获取字段的子集?,python,json,python-requests,Python,Json,Python Requests,我正试图解析它,以便只获取名称和机器人id 我使用了json.loads并做了如下操作 for item in response: print item['bot_id'] 现在我最关心的是获取机器人id 这是我得到的输出: { u'meta': {u'code': 200}, u'response': [ {u'group_id': u'49818165', u'name': u'Johnny Five', u'dm_notifica
for item in response:
print item['bot_id']
现在我最关心的是获取机器人id
这是我得到的输出:
{
u'meta': {u'code': 200},
u'response': [
{u'group_id': u'49818165', u'name': u'Johnny Five',
u'dm_notification': False, u'group_name': u'Travis Manion Presentation',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'240b08e530d42f286f30a75379'
},
{u'group_id': u'48672722', u'name': u'Johnny Five',
u'dm_notification': False, u'group_name': u'DevOps Autodidact',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'64395a02a9382796f7cd7616ef'
},
{u'group_id': u'48402248', u'name': u'suck ya mom',
u'dm_notification': False, u'group_name': u'Free Flicks',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'42aacdb69615721d68c31d71c0'
},
{u'group_id': u'43195303', u'name': u'The goat',
u'dm_notification': False, u'group_name': u'2nd Floor Boiz',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'd45a95b6bbb344639104fd6a3a'
}
]
}
我想要的就是所有的机器人ID和名字
我只希望它输出机器人ID数组或名称数组。以您的输出为例:
bot_ids, names = [], []
for x in response:
bot_ids.append(x['bot_id'])
names.append(x['name'])
print bot_ids
print names
FULL_RESPONSE = {
u'meta': {u'code': 200},
u'response': [
{u'group_id': u'49818165', u'name': u'Johnny Five',
u'dm_notification': False, u'group_name': u'Travis Manion Presentation',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'240b08e530d42f286f30a75379'
},
{u'group_id': u'48672722', u'name': u'Johnny Five',
u'dm_notification': False, u'group_name': u'DevOps Autodidact',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'64395a02a9382796f7cd7616ef'
},
{u'group_id': u'48402248', u'name': u'suck ya mom',
u'dm_notification': False, u'group_name': u'Free Flicks',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'42aacdb69615721d68c31d71c0'
},
{u'group_id': u'43195303', u'name': u'The goat',
u'dm_notification': False, u'group_name': u'2nd Floor Boiz',
u'avatar_url': None, u'callback_url': None,
u'bot_id': u'd45a95b6bbb344639104fd6a3a'
}
]
}
response = FULL_RESPONSE['response']
bot_ids = list()
names = list()
for item in response:
bot_ids.append(item['bot_id'])
names.append(item['name'])
print(bot_ids)
print(names)
另一种方法是使用列表理解,然后调用
您还可以使用值列表按键对所有字典进行分组:
groups = {}
for d in response['response']:
for key, value in d.items():
groups.setdefault(key, []).append(value)
print(groups['name'])
print(groups['bot_id'])
这是有效的:我只是加载了response.text,然后加载了JSON,我意识到response元素是有效的,所以我只是迭代响应数组并调用bot_id和name。然后我将变量分配给我想要的item元素,并将它们添加到数组中
myRequest = requests.get("https://api.groupme.com/v3/bots?token=token1234")
json_str = myRequest.text
data = json.loads(json_str)
bot_ids = []
names = []
for item in data['response']:
name = item['name']
bot_id = item['bot_id']
names.append(name)
bot_ids.append(bot_id)
打印机器人ID
打印姓名请不要仅将代码作为答案发布,请确保包含代码的作用以及如何解决问题的说明。这使你的答案更有价值,更有可能吸引更多的选票。
def view_bot_ids(getField):
ourData = []
response = requests.get("https://api.groupme.com/v3/bots?token=CANTSHOWTHIS")
if response.status_code == 200:
for item in response.json():
ourData.append(response[item].get(getField))
return ourData
print(view_bot_ids('name'))
print(view_bot_ids('bot_id'))
groups = {}
for d in response['response']:
for key, value in d.items():
groups.setdefault(key, []).append(value)
print(groups['name'])
print(groups['bot_id'])
myRequest = requests.get("https://api.groupme.com/v3/bots?token=token1234")
json_str = myRequest.text
data = json.loads(json_str)
bot_ids = []
names = []
for item in data['response']:
name = item['name']
bot_id = item['bot_id']
names.append(name)
bot_ids.append(bot_id)