python parse nested json array

Viewed 25

i'm trying to parse every response data inside ACCINFORMATION. instead getting all data, i only can parse one data from first list.

here's the data :

{
"DATA": {
    "0": {
        "CIF": "123ABC",
        "NAME": "ALBERT",
        "ACCINFORMATION": [
            {
                "ACCNUM": "0007592371100",
                "ACCBAL": "000000000000000 ",
                "ACCTYPE": "E2",
                "BRANCH": "0011",
            },
            {
                "ACCNUM": "0278888888888",
                "ACCBAL": "000000000319626 ",
                "ACCTYPE": "ET",
                "BRANCH": "0027",
            },
            {
                "ACCNUM": "0018239485101",
                "ACCBAL": "000000000000000 ",
                "ACCTYPE": "EC",
                "BRANCH": "0027",
            }
        ]
    }
}

}

here's is my code :

jresponse = response_payloads.json()
results = []
                      
jdata = {'FULLNAME': jresponse['DATA']['0']['NAME'], 
'ACCOUNT': jresponse['DATA']['0']['ACCINFORMATION'][0]['ACCNUM'],
'ACCTYPE': jresponse['DATA']['0']['ACCINFORMATION'][0]['ACCTYPE']}

results.append(jdata)
return jsonify({'status':'success', 'code':'00', 'data': jdata})

and here's the response, how do i parse all data inside ACCINFORMATION ?

{
    "status": "success",
    "code": "00",
    "data": {
        "FULLNAME": "ALBERT",
        "ACCOUNT": "0007592371100",
        "ACCTYPE": "E2"
    }
}
1 Answers

If you want to get all the data you have to iterate over it. You can try the following:

import json
jresponse = {
"DATA": {
    "0": {
        "CIF": "123ABC",
        "NAME": "ALBERT",
        "ACCINFORMATION": [
            {
                "ACCNUM": "0007592371100",
                "ACCBAL": "000000000000000 ",
                "ACCTYPE": "E2",
                "BRANCH": "0011",
            },
            {
                "ACCNUM": "0278888888888",
                "ACCBAL": "000000000319626 ",
                "ACCTYPE": "ET",
                "BRANCH": "0027",
            },
            {
                "ACCNUM": "0018239485101",
                "ACCBAL": "000000000000000 ",
                "ACCTYPE": "EC",
                "BRANCH": "0027",
            }
        ]
    }
}
}

#jresponse = response_payloads.json()
results = []
#initialize jdata with empty ACCOUNT list and empty ACCTYPE list
jdata = {'FULLNAME': jresponse['DATA']['0']['NAME'], 'ACCOUNT': [], 'ACCTYPE': []}
#iterate through each account info
for account in jresponse["DATA"]["0"]["ACCINFORMATION"]:
    #append the results to your jdata dictionary
    jdata['ACCOUNT'].append(account['ACCNUM'])
    jdata['ACCTYPE'].append(account['ACCTYPE'])
    results.append(jdata)
print(json.dumps({'status':'success', 'code':'00', 'data': jdata}))

Output

{"status": "success", "code": "00", "data": {"FULLNAME": "ALBERT", "ACCOUNT": ["0007592371100", "0278888888888", "0018239485101"], "ACCTYPE": ["E2", "ET", "EC"]}}
Related