Home > Software engineering >  Identifying empty list in JSON data in Python
Identifying empty list in JSON data in Python

Time:08-05

I have a json data set I'm trying to insert into a database. To do so, I need placeholders "" for non-existent data. In the example below, if there's no email address, I need the insert statement to be (....,"boo",....) instead of (....,"[email protected]",....). I have tried checking for list length, using not, email == [], etc. Every way I know how or have Googled, and none are working.

Example data:

{
    "data": [
        {
            "campsites": {
                ...
            },
            "contacts": {
                "emailAddresses": [],
                "phoneNumbers": []
            },
...

My code for this particular section:

results = response.json()['data']
for item in results:
    for email in item['contacts']['emailAddresses']:
        if email == []:
            print("boo")
        else:
            print(email['emailAddress'])

The if statement (regardless of how I've tried so far), does not execute, and I get a printed list of only the email addresses if they exist:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

I need:

boo
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
boo
[email protected]
[email protected]

CodePudding user response:

If the list of "emailAddresses" is empty, the for loop doesn't get executed. Accordingly print("boo") neither.

You need to check the list first, before iterate through the list:

results = response.json()["data"]
for item in results:
    emails = item["contacts"]["emailAddresses"]
    if emails:
        for email in emails:
            print(email)
    else:
        print("boo")
  • Related