Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解析此JSON响应以仅获取字段的子集?_Python_Json_Python Requests - Fatal编程技术网

Python 如何解析此JSON响应以仅获取字段的子集?

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

我正试图解析它,以便只获取名称和机器人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_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)