重新格式化这个json输出时出现问题?

时间:2017-01-11 03:07:23

标签: python json python-3.x dictionary python-requests

我正在使用以下请求调用API:

def get_data(text, url='api.com'):
    r = requests.get(url,
                     params={'key': '<My KEY>',
                             'in': text
                             'fj': 'm'})
    if r.status_code != requests.codes.ok:
        return np.nan
    return r.json()

每一行都是这样的:

{'A': [{'param0': 'a',
   'param1': 'b',
   'param2': '342',
   'param3': '$ 2342',
   'param4': '234',
   'param5': '555'}],
 'status': {'code': '0', 'credits': '1', 'msg': 'OK'}}

如何将每个列转换为这样的元组:

[('param0','a'), ('param1','b'), ('param2', '342'), ('param3', '$ 2342'), ('param5', '555')]

在第一个实例中,我试图解析上面的输出,但是因为我得到了以后无法访问:

TypeError: the JSON object must be str, not 'float'

知道如何获取元组列表吗?。

1 个答案:

答案 0 :(得分:1)

d = {'A': [{'param0': 'a',
   'param1': 'b',
   'param2': '342',
   'param3': '$ 2342',
   'param4': '234',
   'param5': '555'}],
 'status': {'code': '0', 'credits': '1', 'msg': 'OK'}}

[i for i in d['A'][0].items()]

出:

[('param1', 'b'),
 ('param5', '555'),
 ('param0', 'a'),
 ('param4', '234'),
 ('param3', '$ 2342'),
 ('param2', '342')]

如果您正在处理JSON数据,还有一个内置的JSON 解码器

>>> import requests

>>> r = requests.get('https://api.github.com/events')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...