【问题标题】:Problems while reformating this json output?重新格式化此 json 输出时出现问题?
【发布时间】:2017-05-25 17:20:53
【问题描述】:

我正在调用一个 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'

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

【问题讨论】:

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


    【解决方案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/...
    

    【讨论】:

    • 谢谢,我收到了这个错误:ValueError: malformed node or string:。我猜是一个编码问题......因为函数输出的类型是一个字典
    • @john doe stackoverflow.com/questions/14611352/…。此错误与此问题无关。
    • 再次感谢!...我试过用ast还是一样,我该怎么办?
    • @john 你应该发布另一个关于它的问题,很难在评论中回答问题。并请接受此答案以结束此问题。
    • 我试图重新格式化 json 的输出,检查我的更新!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2014-07-24
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多