Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

Insert JSON Array into another JSON Object

See more JSON Examples

Demonstrates how to insert a JSON array into a JSON object.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

#  Imagine we have two separate JSON objects.
set jsonA [new_CkJsonObject]

CkJsonObject_UpdateString $jsonA "ciphertext" "encryptedData"
CkJsonObject_UpdateInt $jsonA "status" 200
CkJsonObject_UpdateString $jsonA "error" "errorMsg"

CkJsonObject_put_EmitCompact $jsonA 0
puts [CkJsonObject_emit $jsonA]

#  jsonA contains:

#  {
#    "ciphertext": "encryptedData",
#    "status": 200,
#    "error": "errorMsg"
#  }

set jsonB [new_CkJsonObject]

CkJsonObject_UpdateString $jsonB "users[0].role" "Surgeon"
CkJsonObject_UpdateNewArray $jsonB "users[0].sub_roles"
CkJsonObject_UpdateBool $jsonB "users[0].viewable_for_sharing" 1
CkJsonObject_UpdateInt $jsonB "users[0].eula_create_date" 123
CkJsonObject_UpdateString $jsonB "users[1].role" "Support"
CkJsonObject_UpdateString $jsonB "users[1].sub_roles[0]" "Tech"
CkJsonObject_UpdateString $jsonB "users[1].sub_roles[1]" "Service"
CkJsonObject_UpdateBool $jsonB "users[1].viewable_for_sharing" 1
CkJsonObject_UpdateInt $jsonB "users[1].eula_create_date" 123

CkJsonObject_put_EmitCompact $jsonB 0
puts [CkJsonObject_emit $jsonB]

#  jsonB contains:

#  {
#    "users": [
#      {
#        "role": "Surgeon",
#        "sub_roles": [],
#        "viewable_for_sharing": true,
#        "eula_create_date": 1649108922482
#      },
#      {
#        "role": "Support",
#        "sub_roles": [
#          "Tech",
#          "Service"
#        ],
#        "viewable_for_sharing": true,
#        "eula_create_date": 1649108951523
#      }
#    ]
#  }

#  Let's say we want to insert jsonB into jsonA to get this:

#  {
#    "ciphertext": "encryptedData",
#    "status": 200,
#    "error": "errorMsg",
#    "users": [
#      {
#        "role": "Surgeon",
#        "sub_roles": [],
#        "viewable_for_sharing": true,
#        "eula_create_date": 1649108922482
#      },
#      {
#        "role": "Support",
#        "sub_roles": [
#          "Tech",
#          "Service"
#        ],
#        "viewable_for_sharing": true,
#        "eula_create_date": 1649108951523
#      }
#    ]
#  }

#  The destination is the empty "users" array, the source is the populated "users" array in jsonB.
set jsonUsersDest [new_CkJsonArray]

CkJsonObject_AppendArray2 $jsonA "users" $jsonUsersDest

set jsonUsersSrc [new_CkJsonArray]

CkJsonObject_ArrayOf2 $jsonB "users" $jsonUsersSrc

#  Copy the array items from source to dest
CkJsonArray_AppendArrayItems $jsonUsersDest $jsonUsersSrc

puts [CkJsonObject_emit $jsonA]

#  The end result is this:

#  {
#    "ciphertext": "encryptedData",
#    "status": 200,
#    "error": "errorMsg",
#    "users": [
#      {
#        "role": "Surgeon",
#        "sub_roles": [
#        ],
#        "viewable_for_sharing": true,
#        "eula_create_date": 123
#      },
#      {
#        "role": "Support",
#        "sub_roles": [
#          "Tech",
#          "Service"
#        ],
#        "viewable_for_sharing": true,
#        "eula_create_date": 123
#      }
#    ]
#  }

delete_CkJsonObject $jsonA
delete_CkJsonObject $jsonB
delete_CkJsonArray $jsonUsersDest
delete_CkJsonArray $jsonUsersSrc