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) Using Pre-defined JSON TemplatesDemonstrates how to predefine a JSON template, and then use it to emit JSON with variable substitutions. Note: This example requires Chilkat v9.5.0.67 or greater.
Use ChilkatAx-win32.pkg Procedure Test Handle hoJson Boolean iSuccess Handle hoJsonTemplate Donut Handle hoJsonDonut Variant vDonutValues Handle hoDonutValues Boolean iOmitEmpty String sTemp1 // One way to create JSON is to do it in a straightforward manner: Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Set ComEmitCompact Of hoJson To False Get ComUpdateString Of hoJson "id" "0001" To iSuccess Get ComUpdateString Of hoJson "type" "donut" To iSuccess Get ComUpdateString Of hoJson "name" "Cake" To iSuccess Get ComUpdateString Of hoJson "image.url" "images/0001.jpg" To iSuccess Get ComUpdateInt Of hoJson "image.width" 200 To iSuccess Get ComUpdateInt Of hoJson "image.height" 200 To iSuccess Get ComUpdateString Of hoJson "thumbnail.url" "images/thumbnails/0001.jpg" To iSuccess Get ComUpdateInt Of hoJson "thumbnail.width" 32 To iSuccess Get ComUpdateInt Of hoJson "thumbnail.height" 32 To iSuccess Get ComEmit Of hoJson To sTemp1 Showln sTemp1 // The JSON created by the above code: // { // "id": "0001", // "type": "donut", // "name": "Cake", // "image": { // "url": "images/0001.jpg", // "width": 200, // "height": 200 // }, // "thumbnail": { // "url": "images/thumbnails/0001.jpg", // "width": 32, // "height": 32 // } // } // An alternative is to predefine a template, and then use it to emit with variable substitutions. // For example: Get Create (RefClass(cComChilkatJsonObject)) To hoJsonTemplate If (Not(IsComObjectCreated(hoJsonTemplate))) Begin Send CreateComObject of hoJsonTemplate End Get ComUpdateString Of hoJsonTemplate "id" "{$id}" To iSuccess Get ComUpdateString Of hoJsonTemplate "type" "donut" To iSuccess Get ComUpdateString Of hoJsonTemplate "name" "{$name}" To iSuccess Get ComUpdateString Of hoJsonTemplate "image.url" "{$imageUrl}" To iSuccess // The "i." indicates that it's an integer variable. Get ComUpdateString Of hoJsonTemplate "image.width" "{$i.imageWidth}" To iSuccess Get ComUpdateString Of hoJsonTemplate "image.height" "{$i.imageHeight}" To iSuccess Get ComUpdateString Of hoJsonTemplate "thumbnail.url" "{$thumbUrl}" To iSuccess Get ComUpdateString Of hoJsonTemplate "thumbnail.width" "{$i.thumbWidth}" To iSuccess Get ComUpdateString Of hoJsonTemplate "thumbnail.height" "{$i.thumbHeight}" To iSuccess // Give this template a name. Get ComPredefine Of hoJsonTemplate "donut" To iSuccess // -------------------------------------------------------------------------- // OK, the template is defined. Defining a template can be done once // at the start of your program, and you can discard the jsonTemplate object (it // doesn't need to stick around..) // Now we can create instances of the JSON object by name: Get Create (RefClass(cComChilkatJsonObject)) To hoJsonDonut If (Not(IsComObjectCreated(hoJsonDonut))) Begin Send CreateComObject of hoJsonDonut End Set ComEmitCompact Of hoJsonDonut To False Get ComLoadPredefined Of hoJsonDonut "donut" To iSuccess Get ComEmit Of hoJsonDonut To sTemp1 Showln sTemp1 // The output is this: // { // "id": "{$id}", // "type": "donut", // "name": "{$name}", // "image": { // "url": "{$imageUrl}", // "width": "{$i.imageWidth}", // "height": "{$i.imageHeight}" // }, // "thumbnail": { // "url": "{$thumbUrl}", // "width": "{$i.thumbWidth}", // "height": "{$i.thumbHeight}" // } // } // Finally, we can substitute variables like this: Get Create (RefClass(cComChilkatHashtable)) To hoDonutValues If (Not(IsComObjectCreated(hoDonutValues))) Begin Send CreateComObject of hoDonutValues End Get ComAddStr Of hoDonutValues "id" "0001" To iSuccess Get ComAddStr Of hoDonutValues "name" "Cake" To iSuccess Get ComAddStr Of hoDonutValues "imageUrl" "images/0001.jpg" To iSuccess Get ComAddInt Of hoDonutValues "imageWidth" 200 To iSuccess Get ComAddInt Of hoDonutValues "imageHeight" 200 To iSuccess Get ComAddStr Of hoDonutValues "thumbUrl" "images/thumbnails/0001.jpg" To iSuccess Get ComAddInt Of hoDonutValues "thumbWidth" 32 To iSuccess Get ComAddInt Of hoDonutValues "thumbHeight" 32 To iSuccess // Emit with variable substitutions: Move True To iOmitEmpty Get ComEmitWithSubs Of hoJsonDonut Get pvComObject of hoDonutValues to vDonutValues vDonutValues iOmitEmpty To sTemp1 Showln sTemp1 // Output: // { // "id": "0001", // "type": "donut", // "name": "Cake", // "image": { // "url": "images/0001.jpg", // "width": 200, // "height": 200 // }, // "thumbnail": { // "url": "images/thumbnails/0001.jpg", // "width": 32, // "height": 32 // } // } // Change some of the values: Get ComAddStr Of hoDonutValues "id" "0002" To iSuccess Get ComAddStr Of hoDonutValues "imageUrl" "images/0002.jpg" To iSuccess Get ComAddStr Of hoDonutValues "thumbUrl" "images/thumbnails/0002.jpg" To iSuccess Get ComEmitWithSubs Of hoJsonDonut Get pvComObject of hoDonutValues to vDonutValues vDonutValues iOmitEmpty To sTemp1 Showln sTemp1 // Output: // { // "id": "0002", // "type": "donut", // "name": "Cake", // "image": { // "url": "images/0002.jpg", // "width": 200, // "height": 200 // }, // "thumbnail": { // "url": "images/thumbnails/0002.jpg", // "width": 32, // "height": 32 // } // } End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.