![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) JSON PathsDemonstrates using "Chilkat JSON Paths" to access parts of a JSON document, or to iterate over parts. This example uses the following JSON document: { "nestedArray" : [ [ [1,2,3], [4,5,6], [7,8,9,10] ], [ [11,12,13], [14,15,16], [17,18,19,20] ], [ [21,22,23], [24,25,26], [27,28,29,30], [31,32,33,34,35,36] ] ], "nestedObject" : { "aaa" : { "bb1" : { "cc1" : "c1Value", "cc2" : "c2Value", "cc3" : "c3Value" }, "bb2" : { "dd1" : "d1Value", "dd2" : "d2Value", "dd3" : "d3Value" } } }, "mixture" : { "arrayA" : [ { "fruit": "apple", "animal": "horse", "job": "fireman", "colors": ["red","blue","green"] }, { "fruit": "pear", "animal": "plankton", "job": "waiter", "colors": ["yellow","orange","purple"] }, { "fruit": "kiwi", "animal": "echidna", "job": "astronaut", "colors": ["magenta","tan","pink"] } ] }, "name.with.dots" : { "grain" : "oats" } } Note: This example requires Chilkat v11.0.0 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoJson Integer iSz Integer i Integer j Integer k Integer iSzI Integer iSzJ Integer iSzK Variant vObj2 Handle hoObj2 Variant vArr1 Handle hoArr1 Integer iSzArr1 String sTemp1 Integer iTemp1 Move False To iSuccess Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Set ComEmitCompact Of hoJson To False // Assume the file contains the data as shown above.. Get ComLoadFile Of hoJson "qa_data/json/pathSample.json" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoJson To sTemp1 Showln sTemp1 Procedure_Return End // First, let's get the value of "cc1" // The path to this value is: nestedObject.aaa.bb1.cc1 Get ComStringOf Of hoJson "nestedObject.aaa.bb1.cc1" To sTemp1 Showln sTemp1 // Now let's get number 18 from the nestedArray. // It is located at nestedArray[1][2][1] // (remember: Indexing is 0-based) Get ComIntOf Of hoJson "nestedArray[1][2][1]" To iTemp1 Showln "This should be 18: " iTemp1 // We can do the same thing in a more roundabout way using the // I, J, and K properties. (The I,J,K properties will be convenient // for iterating over arrays, as we'll see later.) Set ComI Of hoJson To 1 Set ComJ Of hoJson To 2 Set ComK Of hoJson To 1 Get ComIntOf Of hoJson "nestedArray[i][j][k]" To iTemp1 Showln "This should be 18: " iTemp1 // Let's iterate over the array containing the numbers 17, 18, 19, 20. // First, use the SizeOfArray method to get the array size: Get ComSizeOfArray Of hoJson "nestedArray[1][2]" To iSz // The size should be 4. Showln "size of array = " iSz " (should equal 4)" // Now iterate... For i From 0 To (iSz - 1) Set ComI Of hoJson To i Get ComIntOf Of hoJson "nestedArray[1][2][i]" To iTemp1 Showln iTemp1 Loop // Let's use a triple-nested loop to iterate over the nestedArray: // szI should equal 1. Get ComSizeOfArray Of hoJson "nestedArray" To iSzI For i From 0 To (iSzI - 1) Set ComI Of hoJson To i Get ComSizeOfArray Of hoJson "nestedArray[i]" To iSzJ For j From 0 To (iSzJ - 1) Set ComJ Of hoJson To j Get ComSizeOfArray Of hoJson "nestedArray[i][j]" To iSzK For k From 0 To (iSzK - 1) Set ComK Of hoJson To k Get ComIntOf Of hoJson "nestedArray[i][j][k]" To iTemp1 Showln iTemp1 Loop Loop Loop // Now let's examine how to navigate to JSON objects contained within JSON arrays. // This line of code gets the value "kiwi" contained within "mixture" Get ComStringOf Of hoJson "mixture.arrayA[2].fruit" To sTemp1 Showln sTemp1 // This line of code gets the color "yellow" Get ComStringOf Of hoJson "mixture.arrayA[1].colors[0]" To sTemp1 Showln sTemp1 // Getting an object at a path: // This gets the 2nd object in "arrayA" Get Create (RefClass(cComChilkatJsonObject)) To hoObj2 If (Not(IsComObjectCreated(hoObj2))) Begin Send CreateComObject of hoObj2 End Get pvComObject of hoObj2 to vObj2 Get ComObjectOf2 Of hoJson "mixture.arrayA[1]" vObj2 To iSuccess // This object's "animal" should be "plankton" Get ComStringOf Of hoObj2 "animal" To sTemp1 Showln sTemp1 // Note that paths are relative to the object, not the absolute root of the JSON document. // Starting from obj2, "purple" is at "colors[2]" Get ComStringOf Of hoObj2 "colors[2]" To sTemp1 Showln sTemp1 // Getting an array at a path: // This gets the array containing the colors red, green, blue: Get Create (RefClass(cComChilkatJsonArray)) To hoArr1 If (Not(IsComObjectCreated(hoArr1))) Begin Send CreateComObject of hoArr1 End Get pvComObject of hoArr1 to vArr1 Get ComArrayOf2 Of hoJson "mixture.arrayA[0].colors" vArr1 To iSuccess Get ComSize Of hoArr1 To iSzArr1 For i From 0 To (iSzArr1 - 1) Get ComStringAt Of hoArr1 i To sTemp1 Showln i ": " sTemp1 Loop // The Chilkat JSON path uses ".", "[", and "]" chars for separators. When a name // contains one of these chars, use double-quotes in the path: Get ComStringOf Of hoJson '"name.with.dots".grain' To sTemp1 Showln sTemp1 End_Procedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.