PureBasic
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
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