Sample code for 30+ languages & platforms
Chilkat2-Python

QuickBooks - Parse the JSON of a Customer Balance Detail Report

See more CSV Examples

This example is to show how to parse the JSON of a particular Quickbooks report. The techniques shown here may help in parsing similar reports.

The JSON to be parsed is available at Sample Quickbooks Customer Balance Detail Report JSON

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

http = chilkat2.Http()

# Get the JSON we'll be parsing..
jsonStr = http.QuickGetStr("https://www.chilkatsoft.com/exampleData/qb_customer_balance_detail_report_2.json")
if (http.LastMethodSuccess != True):
    print(http.LastErrorText)
    sys.exit()

json = chilkat2.JsonObject()
json.Load(jsonStr)

# As an alternative to manually writing code, use this online tool to generate parsing code from sample JSON: 
# Generate Parsing Code from JSON

# Let's parse the JSON into a CSV, and then save to a CSV file.
csv = chilkat2.Csv()
csv.HasColumnNames = True

# Set the column names of the CSV.
numColumns = json.SizeOfArray("Columns.Column")
if (numColumns < 0):
    print("Unable to get column names")
    sys.exit()

i = 0
while i < numColumns :
    json.I = i
    csv.SetColumnName(i,json.StringOf("Columns.Column[i].ColTitle"))
    i = i + 1

# Let's get the rows.
# We'll ignore the Header and Summary, and just get the data.
row = 0
numRows = json.SizeOfArray("Rows.Row[0].Rows.Row")
if (numRows < 0):
    print("Unable to get data rows")
    sys.exit()

while row < numRows :
    json.I = row
    numColumns = json.SizeOfArray("Rows.Row[0].Rows.Row[i].ColData")
    col = 0
    while col < numColumns :
        json.J = col
        csv.SetCell(row,col,json.StringOf("Rows.Row[0].Rows.Row[i].ColData[j].value"))
        col = col + 1

    row = row + 1

# Show the CSV 
print(csv.SaveToString())

# Save to a CSV file
success = csv.SaveFile("qa_output/customerDetailReport.csv")