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

PureBasic
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