Sample code for 30+ languages & platforms
PureBasic 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 PureBasic Downloads

PureBasic
IncludeFile "CkJsonArray.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    ;  Imagine we have two separate JSON objects.
    jsonA.i = CkJsonObject::ckCreate()
    If jsonA.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(jsonA,"ciphertext","encryptedData")
    CkJsonObject::ckUpdateInt(jsonA,"status",200)
    CkJsonObject::ckUpdateString(jsonA,"error","errorMsg")

    CkJsonObject::setCkEmitCompact(jsonA, 0)
    Debug CkJsonObject::ckEmit(jsonA)

    ;  jsonA contains:

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

    jsonB.i = CkJsonObject::ckCreate()
    If jsonB.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(jsonB,"users[0].role","Surgeon")
    CkJsonObject::ckUpdateNewArray(jsonB,"users[0].sub_roles")
    CkJsonObject::ckUpdateBool(jsonB,"users[0].viewable_for_sharing",1)
    CkJsonObject::ckUpdateInt(jsonB,"users[0].eula_create_date",123)
    CkJsonObject::ckUpdateString(jsonB,"users[1].role","Support")
    CkJsonObject::ckUpdateString(jsonB,"users[1].sub_roles[0]","Tech")
    CkJsonObject::ckUpdateString(jsonB,"users[1].sub_roles[1]","Service")
    CkJsonObject::ckUpdateBool(jsonB,"users[1].viewable_for_sharing",1)
    CkJsonObject::ckUpdateInt(jsonB,"users[1].eula_create_date",123)

    CkJsonObject::setCkEmitCompact(jsonB, 0)
    Debug CkJsonObject::ckEmit(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.
    jsonUsersDest.i = CkJsonArray::ckCreate()
    If jsonUsersDest.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckAppendArray2(jsonA,"users",jsonUsersDest)

    jsonUsersSrc.i = CkJsonArray::ckCreate()
    If jsonUsersSrc.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckArrayOf2(jsonB,"users",jsonUsersSrc)

    ;  Copy the array items from source to dest
    CkJsonArray::ckAppendArrayItems(jsonUsersDest,jsonUsersSrc)

    Debug CkJsonObject::ckEmit(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
    ;      }
    ;    ]
    ;  }


    CkJsonObject::ckDispose(jsonA)
    CkJsonObject::ckDispose(jsonB)
    CkJsonArray::ckDispose(jsonUsersDest)
    CkJsonArray::ckDispose(jsonUsersSrc)


    ProcedureReturn
EndProcedure