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
(Tcl) 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.
load ./chilkat.dll # One way to create JSON is to do it in a straightforward manner: set json [new_CkJsonObject] CkJsonObject_put_EmitCompact $json 0 CkJsonObject_UpdateString $json "id" "0001" CkJsonObject_UpdateString $json "type" "donut" CkJsonObject_UpdateString $json "name" "Cake" CkJsonObject_UpdateString $json "image.url" "images/0001.jpg" CkJsonObject_UpdateInt $json "image.width" 200 CkJsonObject_UpdateInt $json "image.height" 200 CkJsonObject_UpdateString $json "thumbnail.url" "images/thumbnails/0001.jpg" CkJsonObject_UpdateInt $json "thumbnail.width" 32 CkJsonObject_UpdateInt $json "thumbnail.height" 32 puts [CkJsonObject_emit $json] # 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: set jsonTemplate [new_CkJsonObject] CkJsonObject_UpdateString $jsonTemplate "id" "{$id}" CkJsonObject_UpdateString $jsonTemplate "type" "donut" CkJsonObject_UpdateString $jsonTemplate "name" "{$name}" CkJsonObject_UpdateString $jsonTemplate "image.url" "{$imageUrl}" # The "i." indicates that it's an integer variable. CkJsonObject_UpdateString $jsonTemplate "image.width" "{$i.imageWidth}" CkJsonObject_UpdateString $jsonTemplate "image.height" "{$i.imageHeight}" CkJsonObject_UpdateString $jsonTemplate "thumbnail.url" "{$thumbUrl}" CkJsonObject_UpdateString $jsonTemplate "thumbnail.width" "{$i.thumbWidth}" CkJsonObject_UpdateString $jsonTemplate "thumbnail.height" "{$i.thumbHeight}" # Give this template a name. CkJsonObject_Predefine $jsonTemplate "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: set jsonDonut [new_CkJsonObject] CkJsonObject_put_EmitCompact $jsonDonut 0 CkJsonObject_LoadPredefined $jsonDonut "donut" puts [CkJsonObject_emit $jsonDonut] # 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: set donutValues [new_CkHashtable] CkHashtable_AddStr $donutValues "id" "0001" CkHashtable_AddStr $donutValues "name" "Cake" CkHashtable_AddStr $donutValues "imageUrl" "images/0001.jpg" CkHashtable_AddInt $donutValues "imageWidth" 200 CkHashtable_AddInt $donutValues "imageHeight" 200 CkHashtable_AddStr $donutValues "thumbUrl" "images/thumbnails/0001.jpg" CkHashtable_AddInt $donutValues "thumbWidth" 32 CkHashtable_AddInt $donutValues "thumbHeight" 32 # Emit with variable substitutions: set omitEmpty 1 puts [CkJsonObject_emitWithSubs $jsonDonut $donutValues $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: CkHashtable_AddStr $donutValues "id" "0002" CkHashtable_AddStr $donutValues "imageUrl" "images/0002.jpg" CkHashtable_AddStr $donutValues "thumbUrl" "images/thumbnails/0002.jpg" puts [CkJsonObject_emitWithSubs $jsonDonut $donutValues $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 # } # } delete_CkJsonObject $json delete_CkJsonObject $jsonTemplate delete_CkJsonObject $jsonDonut delete_CkHashtable $donutValues |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.