Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... 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" } }
Use ChilkatAx-win32.pkg Procedure Test Handle hoJson Boolean iSuccess 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 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 <> True) 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 ComObjectOf Of hoJson "mixture.arrayA[1]" To vObj2 If (IsComObject(vObj2)) Begin Get Create (RefClass(cComChilkatJsonObject)) To hoObj2 Set pvComObject Of hoObj2 To vObj2 End // 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 Send Destroy of hoObj2 // Getting an array at a path: // This gets the array containing the colors red, green, blue: Get ComArrayOf Of hoJson "mixture.arrayA[0].colors" To vArr1 If (IsComObject(vArr1)) Begin Get Create (RefClass(cComChilkatJsonArray)) To hoArr1 Set pvComObject Of hoArr1 To vArr1 End Get ComSize Of hoArr1 To iSzArr1 For i From 0 To (iSzArr1 - 1) Get ComStringAt Of hoArr1 i To sTemp1 Showln i ": " sTemp1 Loop Send Destroy of hoArr1 // 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-2024 Chilkat Software, Inc. All Rights Reserved.