Baobab1988
Baobab1988

Reputation: 715

Retrieving single json object from python requests results as list

I'm trying to retrieve only requestId object from json results after querying my API.

my code:

def findRequests(group, token, user):
    headers = { 'accept': 'application/json', 
        'Content-Type': 'application/json', 
        'token': token,
        'user': user}
    endpoint = 'requests/find'
    body = {'groupIDs': [group], "createdDate": {'operator': "BETWEEN", 'fromDate': "01-APR-2020 00:00:00", 'toDate': "21-APR-2020 00:00:00"}} 
    r = requests.post(url = host + endpoint, headers = headers, json=body, verify=False)
    data = json.loads(r.text)
    print (data[0]['requestId'])

json data:

[{'requestId': 2567887, 'requestName': 'Here is a sample name', 'requestSubject': 'sample subject', 'createdDate': '01-APR-2020 14:06:03'}, {'requestId': 7665432,...}] 

then I would like to save all the values for requestId object found in results as a list:

 myRequestsList = print(findRequests(group, token, user))

However the above will only return a single requestId and not all of the ones that were returned in data variable in def findRequests(group, token, user). What am I doing wrong?

Output:

2567887
None

Desired output:

2567887,
7665432

Could someone help me with this? thanks in advance!

Upvotes: 0

Views: 51

Answers (1)

andreis11
andreis11

Reputation: 1141

First, you should modify your func:

Then, assign the variable to the func, not the print:

myRequestsList = list(findRequests(group, token, user)))

(!) However, I assume that group,token, user are replaced by other variables.

And finally, to get the output:

for req in myRequestsList:
 print(req)

Later edit:

def findRequests(group, token, user):
    headers = { 'accept': 'application/json', 
        'Content-Type': 'application/json', 
        'token': token,
        'user': user}
    endpoint = 'requests/find'
    body = {'groupIDs': [group], "createdDate": {'operator': "BETWEEN", 'fromDate': "01-APR-2020 00:00:00", 'toDate': "21-APR-2020 00:00:00"}} 
    r = requests.post(url = host + endpoint, headers = headers, json=body, verify=False)
    data = json.loads(r.text)
    final_list = []
    for each_req in data:
      final_list.append(each_req['requestId'])
    return final_list

myRequestsList = findRequests(group, token, user)

for each in myRequestsList:
 print(each)

Upvotes: 1

Related Questions