Sample code for 30+ languages & platforms
PureBasic

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