PureBasic
PureBasic
JSON: Nested Objects
See more JSON Examples
Here we have a JSON object that contains nested JSON objects. This example demonstrates how to access the contents of the nested objects.
{
"name": "donut",
"image":
{
"fname": "donut.jpg",
"w": 200,
"h": 200
},
"thumbnail":
{
"fname": "donutThumb.jpg",
"w": 32,
"h": 32
}
}
Chilkat PureBasic Downloads
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; This is the above JSON with whitespace chars removed (SPACE, TAB, CR, and LF chars).
; The presence of whitespace chars for pretty-printing makes no difference to the Load
; method.
jsonStr.s = "{" + Chr(34) + "name" + Chr(34) + ": " + Chr(34) + "donut" + Chr(34) + "," + Chr(34) + "image" + Chr(34) + ":{" + Chr(34) + "fname" + Chr(34) + ": " + Chr(34) + "donut.jpg" + Chr(34) + "," + Chr(34) + "w" + Chr(34) + ": 200," + Chr(34) + "h" + Chr(34) + ": 200}," + Chr(34) + "thumbnail" + Chr(34) + ":{" + Chr(34) + "fname" + Chr(34) + ": " + Chr(34) + "donutThumb.jpg" + Chr(34) + "," + Chr(34) + "w" + Chr(34) + ": 32," + Chr(34) + "h" + Chr(34) + ": 32}}"
success = CkJsonObject::ckLoad(json,jsonStr)
If success = 0
Debug CkJsonObject::ckLastErrorText(json)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndIf
; Get the "image" object.
imageObj.i = CkJsonObject::ckCreate()
If imageObj.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckObjectOf2(json,"image",imageObj)
Debug "image: fname=" + CkJsonObject::ckStringOf(imageObj,"fname") + ", width=" + Str(CkJsonObject::ckIntOf(imageObj,"w")) + ", height=" + Str(CkJsonObject::ckIntOf(imageObj,"h"))
; Get the "thumbnail" object.
thumbObj.i = CkJsonObject::ckCreate()
If thumbObj.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckObjectOf2(json,"thumbnail",thumbObj)
Debug "thumbnail: fname=" + CkJsonObject::ckStringOf(thumbObj,"fname") + ", width=" + Str(CkJsonObject::ckIntOf(thumbObj,"w")) + ", height=" + Str(CkJsonObject::ckIntOf(thumbObj,"h"))
CkJsonObject::ckDispose(json)
CkJsonObject::ckDispose(imageObj)
CkJsonObject::ckDispose(thumbObj)
ProcedureReturn
EndProcedure