Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

C Web API Examples

Primary Categories

Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(C) QuickBooks - Parse the JSON of a Customer Balance Detail Report

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 C/C++ Library Downloads

MS Visual C/C++

Linux/CentOS C/C++

Alpine Linux C/C++

MAC OS X C/C++

armhf/aarch64 C/C++

C++ Builder

iOS C/C++

Android C/C++

Win Mobile 5.0/Pocket PC 2003

Solaris C/C++

FreeBSD C/C++

OpenBSD C/C++

MinGW C/C++

#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkCsv.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkHttp http;
    const char *jsonStr;
    HCkJsonObject json;
    HCkCsv csv;
    int numColumns;
    int i;
    int row;
    int numRows;
    int col;

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

    http = CkHttp_Create();

    // Get the JSON we'll be parsing..
    jsonStr = CkHttp_quickGetStr(http,"https://www.chilkatsoft.com/exampleData/qb_customer_balance_detail_report_2.json");
    if (CkHttp_getLastMethodSuccess(http) != TRUE) {
        printf("%s\n",CkHttp_lastErrorText(http));
        CkHttp_Dispose(http);
        return;
    }

    json = CkJsonObject_Create();
    CkJsonObject_Load(json,jsonStr);

    // Let's parse the JSON into a CSV, and then save to a CSV file.
    csv = CkCsv_Create();
    CkCsv_putHasColumnNames(csv,TRUE);

    // Set the column names of the CSV.
    numColumns = CkJsonObject_SizeOfArray(json,"Columns.Column");
    if (numColumns < 0) {
        printf("Unable to get column names\n");
        CkHttp_Dispose(http);
        CkJsonObject_Dispose(json);
        CkCsv_Dispose(csv);
        return;
    }

    i = 0;
    while (i < numColumns) {
        CkJsonObject_putI(json,i);
        CkCsv_SetColumnName(csv,i,CkJsonObject_stringOf(json,"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 = CkJsonObject_SizeOfArray(json,"Rows.Row[0].Rows.Row");
    if (numRows < 0) {
        printf("Unable to get data rows\n");
        CkHttp_Dispose(http);
        CkJsonObject_Dispose(json);
        CkCsv_Dispose(csv);
        return;
    }

    while (row < numRows) {
        CkJsonObject_putI(json,row);
        numColumns = CkJsonObject_SizeOfArray(json,"Rows.Row[0].Rows.Row[i].ColData");
        col = 0;
        while (col < numColumns) {
            CkJsonObject_putJ(json,col);
            CkCsv_SetCell(csv,row,col,CkJsonObject_stringOf(json,"Rows.Row[0].Rows.Row[i].ColData[j].value"));
            col = col + 1;
        }

        row = row + 1;
    }

    // Show the CSV 
    printf("%s\n",CkCsv_saveToString(csv));

    // Save to a CSV file
    success = CkCsv_SaveFile(csv,"qa_output/customerDetailReport.csv");


    CkHttp_Dispose(http);
    CkJsonObject_Dispose(json);
    CkCsv_Dispose(csv);

    }

 

© 2000-2019 Chilkat Software, Inc. All Rights Reserved.