【问题标题】:Extract a json field from request query result in python从python中的请求查询结果中提取一个json字段
【发布时间】:2016-07-28 02:38:20
【问题描述】:

如何从以下代码的结果中提取特定字段??

payload = {'token': 'XXXXXXXX', 'channel': 'C0L8MGLMN' , 'count': '10'}
r = requests.get('https://slack.com/api/channels.history', params=payload)
print r.status_code
pprint(r.json())

print "---------------------------"
k = r.json()
print "Now printing some cool stuff"
response_dict = json.loads(k)
response_dict['text']

这会导致:

200
{u'has_more': False,
 u'is_limited': True,
 u'messages': [{u'text': u'This is not a test!',
                u'ts': u'1459763505.000003',
                u'type': u'message',
                u'user': u'U03FE3Z7D'},
               {u'subtype': u'bot_message',
                u'text': u'This is a test!',
                u'ts': u'1459750060.000002',
                u'type': u'message',
                u'username': u'facsimile_test'}],
 u'ok': True}
---------------------------
Now printing some cool stuff
Traceback (most recent call last):
  File "clean_SLACK.py", line 17, in <module>
    response_dict = json.loads(k)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer

我无法提取文本或用户等字段。

【问题讨论】:

    标签: python json python-requests


    【解决方案1】:

    Response.json 返回一个经过 json 解码的对象。只需将k 用作python 对象即可:

    k = r.json()
    print "Now printing some cool stuff"
    for msg in k['messages']:
        print msg['text']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 2010-10-15
      相关资源
      最近更新 更多