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
(Delphi ActiveX) 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.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var json: TChilkatJsonObject; jsonTemplate: TChilkatJsonObject; jsonDonut: TChilkatJsonObject; donutValues: TChilkatHashtable; omitEmpty: Integer; begin // One way to create JSON is to do it in a straightforward manner: json := TChilkatJsonObject.Create(Self); json.EmitCompact := 0; json.UpdateString('id','0001'); json.UpdateString('type','donut'); json.UpdateString('name','Cake'); json.UpdateString('image.url','images/0001.jpg'); json.UpdateInt('image.width',200); json.UpdateInt('image.height',200); json.UpdateString('thumbnail.url','images/thumbnails/0001.jpg'); json.UpdateInt('thumbnail.width',32); json.UpdateInt('thumbnail.height',32); Memo1.Lines.Add(json.Emit()); // 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: jsonTemplate := TChilkatJsonObject.Create(Self); jsonTemplate.UpdateString('id','{$id}'); jsonTemplate.UpdateString('type','donut'); jsonTemplate.UpdateString('name','{$name}'); jsonTemplate.UpdateString('image.url','{$imageUrl}'); // The "i." indicates that it's an integer variable. jsonTemplate.UpdateString('image.width','{$i.imageWidth}'); jsonTemplate.UpdateString('image.height','{$i.imageHeight}'); jsonTemplate.UpdateString('thumbnail.url','{$thumbUrl}'); jsonTemplate.UpdateString('thumbnail.width','{$i.thumbWidth}'); jsonTemplate.UpdateString('thumbnail.height','{$i.thumbHeight}'); // Give this template a name. jsonTemplate.Predefine('donut'); // -------------------------------------------------------------------------- // 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: jsonDonut := TChilkatJsonObject.Create(Self); jsonDonut.EmitCompact := 0; jsonDonut.LoadPredefined('donut'); Memo1.Lines.Add(jsonDonut.Emit()); // 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: donutValues := TChilkatHashtable.Create(Self); donutValues.AddStr('id','0001'); donutValues.AddStr('name','Cake'); donutValues.AddStr('imageUrl','images/0001.jpg'); donutValues.AddInt('imageWidth',200); donutValues.AddInt('imageHeight',200); donutValues.AddStr('thumbUrl','images/thumbnails/0001.jpg'); donutValues.AddInt('thumbWidth',32); donutValues.AddInt('thumbHeight',32); // Emit with variable substitutions: omitEmpty := 1; Memo1.Lines.Add(jsonDonut.EmitWithSubs(donutValues.ControlInterface,omitEmpty)); // 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: donutValues.AddStr('id','0002'); donutValues.AddStr('imageUrl','images/0002.jpg'); donutValues.AddStr('thumbUrl','images/thumbnails/0002.jpg'); Memo1.Lines.Add(jsonDonut.EmitWithSubs(donutValues.ControlInterface,omitEmpty)); // 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; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.