3

How to extract a particular field from the result of the following code??

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']

This results in :

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

I am not able to extract the fields like text or user etc.

1 Answer 1

4

Response.json returns an object that is json decoded. Just use k as a python object:

k = r.json()
print "Now printing some cool stuff"
for msg in k['messages']:
    print msg['text']
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.