Pass a JSON Item in Python (Twitter API)

113 views Asked by At

I'm using the Temboo Twitter API for Python to download tweets. I want to interpret them but am having trouble pulling out certain values. It returns each tweet in JSON. I want to take certain items out of the JSON and pass them over for further use (favorite_count in the example below). print (json.loads(array)) works fine but the following line print (data['favorite_count']) does not and returns and error list indices must be integers, not str. Giving an integer value just returns and out of range index error.

Would really appreciate a solution to extracting a certain section from the JSON list.

homeTimelineResults = homeTimelineChoreo.execute_with_results(homeTimelineInputs)

if __name__ == "__main__":
    array = homeTimelineResults.get_Response()
    data  = json.loads(array)
    print (json.loads(array))
    print (data['favorite_count'])
1

There are 1 answers

0
fpierfed On

From the error you are getting, I would guess that data is a list, not a dictionary. What you could do then is something along these lines:

import collections

homeTimelineResults = homeTimelineChoreo.execute_with_results(homeTimelineInputs)

if __name__ == "__main__":
    array = homeTimelineResults.get_Response()
    data = json.loads(array)
    if data and isinstance(data, collections.Iterable) and not isinstance(data, (str, bytes)):
        result = data.pop(0)
        print(result['favorite_count'])

Basically we are checking that data is indeed a list or tuple or something you can iterate over (but not a string or a sequence of bytes) and that it is not empty. This is the meaning of the if statement after data = json.loads(array).

If that is indeed the case, we pop the first element and - assuming that it is a dictionary - access its 'favorite_count' key. Of course this assumption is pretty dangerous and one should be a bit more careful and check first :-)