DataFlex
DataFlex
JSON FindRecord Example
See more JSON Examples
Demonstrates the FindRecord method for searching an array of JSON records. The data used in this example is available at JSON sample data for FindRecord.Note: This example requires Chilkat v9.5.0.63 or later.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJson
String sArrayPath
String sRelativePath
String sValue
Boolean iCaseSensitive
Variant vAccountRec
Handle hoAccountRec
String sTemp1
Boolean bTemp1
Move False To iSuccess
// Note: This example requires Chilkat v9.5.0.63 or later.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoadFile Of hoJson "qa_data/json/qb_accounts.json" To iSuccess
// A sample of the content of qb_accounts.json is shown at the bottom of this example.
// The goal is to search the array of Account records to return the 1st match
// Find the account with the name "Advertising"
Move "QueryResponse.Account" To sArrayPath
Move "Name" To sRelativePath
Move "Advertising" To sValue
Move True To iCaseSensitive
Get ComFindRecord Of hoJson sArrayPath sRelativePath sValue iCaseSensitive To vAccountRec
If (IsComObject(vAccountRec)) Begin
Get Create (RefClass(cComChilkatJsonObject)) To hoAccountRec
Set pvComObject Of hoAccountRec To vAccountRec
End
Get ComLastMethodSuccess Of hoJson To bTemp1
If (bTemp1 <> True) Begin
Showln "Record not found."
Procedure_Return
End
// The accountRec should contain this:
// {
// "Name": "Advertising",
// "SubAccount": false,
// "FullyQualifiedName": "Advertising",
// "Active": true,
// "Classification": "Expense",
// "AccountType": "Expense",
// "AccountSubType": "AdvertisingPromotional",
// "CurrentBalance": 0,
// "CurrentBalanceWithSubAccounts": 0,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "7",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-09T14:42:07-07:00",
// "LastUpdatedTime": "2016-09-09T14:42:07-07:00"
// }
// }
Get ComStringOf Of hoAccountRec "FullyQualifiedName" To sTemp1
Showln "FullyQualifiedName: " sTemp1
Get ComStringOf Of hoAccountRec "AccountType" To sTemp1
Showln "AccountType: " sTemp1
Get ComStringOf Of hoAccountRec "AccountSubType" To sTemp1
Showln "AccountSubType: " sTemp1
Showln "----"
Send Destroy of hoAccountRec
// ------------------------------------------------------------------
// Find the first account where the currency is USD
Move "CurrencyRef.value" To sRelativePath
Move "USD" To sValue
Move True To iCaseSensitive
Get ComFindRecord Of hoJson sArrayPath sRelativePath sValue iCaseSensitive To vAccountRec
If (IsComObject(vAccountRec)) Begin
Get Create (RefClass(cComChilkatJsonObject)) To hoAccountRec
Set pvComObject Of hoAccountRec To vAccountRec
End
Get ComLastMethodSuccess Of hoJson To bTemp1
If (bTemp1 <> True) Begin
Showln "Record not found."
Procedure_Return
End
Get ComStringOf Of hoAccountRec "Name" To sTemp1
Showln "Name: " sTemp1
Get ComStringOf Of hoAccountRec "CurrencyRef.name" To sTemp1
Showln "CurrencyRef.name: " sTemp1
Showln "----"
Send Destroy of hoAccountRec
// ------------------------------------------------------------------
// Find the first account with "receivable" in the name (case insensitive)
Move "Name" To sRelativePath
Move "*receivable*" To sValue
Move False To iCaseSensitive
Get ComFindRecord Of hoJson sArrayPath sRelativePath sValue iCaseSensitive To vAccountRec
If (IsComObject(vAccountRec)) Begin
Get Create (RefClass(cComChilkatJsonObject)) To hoAccountRec
Set pvComObject Of hoAccountRec To vAccountRec
End
Get ComLastMethodSuccess Of hoJson To bTemp1
If (bTemp1 <> True) Begin
Showln "Record not found."
Procedure_Return
End
Get ComStringOf Of hoAccountRec "Name" To sTemp1
Showln "Name: " sTemp1
Showln "----"
Send Destroy of hoAccountRec
// -----------------------------------------------------------------
// qb_accounts.json contains this data
//
// {
// "QueryResponse": {
// "Account": [
// {
// "Name": "Accounts Payable (A/P)",
// "SubAccount": false,
// "Description": "Description added during update.",
// "FullyQualifiedName": "Accounts Payable (A/P)",
// "Active": true,
// "Classification": "Liability",
// "AccountType": "Accounts Payable",
// "AccountSubType": "AccountsPayable",
// "CurrentBalance": -1602.67,
// "CurrentBalanceWithSubAccounts": -1602.67,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "33",
// "SyncToken": "1",
// "MetaData": {
// "CreateTime": "2016-09-10T10:12:02-07:00",
// "LastUpdatedTime": "2016-10-24T16:41:39-07:00"
// }
// },
// {
// "Name": "Accounts Receivable (A/R)",
// "SubAccount": false,
// "FullyQualifiedName": "Accounts Receivable (A/R)",
// "Active": true,
// "Classification": "Asset",
// "AccountType": "Accounts Receivable",
// "AccountSubType": "AccountsReceivable",
// "CurrentBalance": 5281.52,
// "CurrentBalanceWithSubAccounts": 5281.52,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "84",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-14T14:49:29-07:00",
// "LastUpdatedTime": "2016-09-17T13:16:17-07:00"
// }
// },
// {
// "Name": "Advertising",
// "SubAccount": false,
// "FullyQualifiedName": "Advertising",
// "Active": true,
// "Classification": "Expense",
// "AccountType": "Expense",
// "AccountSubType": "AdvertisingPromotional",
// "CurrentBalance": 0,
// "CurrentBalanceWithSubAccounts": 0,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "7",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-09T14:42:07-07:00",
// "LastUpdatedTime": "2016-09-09T14:42:07-07:00"
// }
// },
// {
// "Name": "Arizona Dept. of Revenue Payable",
// "SubAccount": false,
// "FullyQualifiedName": "Arizona Dept. of Revenue Payable",
// "Active": true,
// "Classification": "Liability",
// "AccountType": "Other Current Liability",
// "AccountSubType": "GlobalTaxPayable",
// "CurrentBalance": 0,
// "CurrentBalanceWithSubAccounts": 0,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "89",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-16T12:17:04-07:00",
// "LastUpdatedTime": "2016-09-17T13:05:01-07:00"
// }
// },
// {
// "Name": "Automobile",
// "SubAccount": false,
// "FullyQualifiedName": "Automobile",
// "Active": true,
// "Classification": "Expense",
// "AccountType": "Expense",
// "AccountSubType": "Auto",
// "CurrentBalance": 0,
// "CurrentBalanceWithSubAccounts": 0,
// "CurrencyRef": {
// "value": "USD",
// "name": "United States Dollar"
// },
// "domain": "QBO",
// "sparse": false,
// "Id": "55",
// "SyncToken": "0",
// "MetaData": {
// "CreateTime": "2016-09-14T10:15:53-07:00",
// "LastUpdatedTime": "2016-09-14T10:16:05-07:00"
// }
// },
// ...
//
End_Procedure