Sample code for 30+ languages & platforms
PureBasic

Loading and Parsing a Complex JSON Array

See more JSON Examples

This example loads a JSON array containing more complex data. It shows how to parse (access) various values contained within the JSON.

Chilkat PureBasic Downloads

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

Procedure ChilkatExample()

    success.i = 0

    ; This is the JSON we'll be loading:

    ; 	[
    ; 	  {
    ; 	    "telefones": [
    ; 	      {
    ; 	        "numero": "19995555555",
    ; 	        "tipo": "T",
    ; 	        "id": 2541437
    ; 	      } 
    ; 	    ],
    ; 	    "cnpj": "11395551000164",
    ; 	    "rua": "R XAVIER AUGUSTO ROGGE, 22",
    ; 	    "complemento": "",
    ; 	    "contatos": [
    ; 	    ],
    ; 	    "tipo": "J",
    ; 	    "razao_social": "SOUP BRASIL LTDA - ME",
    ; 	    "nome_fantasia": "SOUP BRASIL",
    ; 	    "bairro": "ABC DOS COLIBRIS",
    ; 	    "cidade": "TEST",
    ; 	    "inscricao_estadual": "222.102.222.116",
    ; 	    "observacao": "",
    ; 	    "id": 2209595,
    ; 	    "ultima_alteracao": "2016-12-26 16:22:34",
    ; 	    "cep": "13555000",
    ; 	    "suframa": "",
    ; 	    "estado": "SP",
    ; 	    "emails": [
    ; 	      {
    ; 	        "email": "somebody@terra.com.br",
    ; 	        "tipo": "T",
    ; 	        "id": 1065557
    ; 	      } 
    ; 	    ],
    ; 	    "excluido": false
    ; 	  },
    ; 	  {
    ; 	    "telefones": [
    ; 	    ],
    ; 	    "cnpj": "12496555500180",
    ; 	    "rua": "AV ROLF WIEST, 100",
    ; 	    "complemento": "ANDAR 7 SALA 612 A 620",
    ; 	    "contatos": [
    ; 	    ],
    ; 	    "tipo": "J",
    ; 	    "razao_social": "SIMPLE SOFTWARE LTDA",
    ; 	    "nome_fantasia": "",
    ; 	    "bairro": "DOM ZETIRO",
    ; 	    "cidade": "APARTVILLE",
    ; 	    "inscricao_estadual": "",
    ; 	    "observacao": "",
    ; 	    "id": 2255594,
    ; 	    "ultima_alteracao": "2016-12-26 16:28:31",
    ; 	    "cep": "89255505",
    ; 	    "suframa": "",
    ; 	    "estado": "SC",
    ; 	    "emails": [
    ; 	    ],
    ; 	    "excluido": false
    ; 	  },
    ; 	  {
    ; 	    "telefones": [
    ; 	      {
    ; 	        "numero": "1938655556",
    ; 	        "tipo": "T",
    ; 	        "id": 2555438
    ; 	      } 
    ; 	    ],
    ; 	    "cnpj": "00003555500153",
    ; 	    "rua": "AV ABCDEF PINTO CATAO, 18",
    ; 	    "complemento": "",
    ; 	    "contatos": [
    ; 	      {
    ; 	        "telefones": [
    ; 	          {
    ; 	            "numero": "1999655554",
    ; 	            "tipo": "T",
    ; 	            "id": 2555559
    ; 	          } 
    ; 	        ],
    ; 	        "cargo": "zzz de compras",
    ; 	        "nome": "Gerard",
    ; 	        "emails": [
    ; 	          {
    ; 	            "email": "gerard@terra.com.br",
    ; 	            "tipo": "T",
    ; 	            "id": 1065559
    ; 	          } 
    ; 	        ],
    ; 	        "id": 844485,
    ; 	        "excluido": false
    ; 	      } 
    ; 	    ],
    ; 	    "tipo": "J",
    ; 	    "razao_social": "TIDY TECNOLOGIA LTDA - EPP",
    ; 	    "nome_fantasia": "TIDY",
    ; 	    "bairro": "TUNA",
    ; 	    "cidade": "JAGUAR",
    ; 	    "inscricao_estadual": "395.222.441.222",
    ; 	    "observacao": "ligar sempre depois das 14hs",
    ; 	    "id": 2255597,
    ; 	    "ultima_alteracao": "2016-12-28 07:31:52",
    ; 	    "cep": "13555500",
    ; 	    "suframa": "",
    ; 	    "estado": "SP",
    ; 	    "emails": [
    ; 	      {
    ; 	        "email": "xi@tidy.com.br",
    ; 	        "tipo": "T",
    ; 	        "id": 10655558
    ; 	      } 
    ; 	    ],
    ; 	    "excluido": false
    ; 	  } 
    ; 	]
    ; 

    ; Construct a StringBuilder containing the above JSON array.
    sb.i = CkStringBuilder::ckCreate()
    If sb.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    bCrlf.i = 1
    CkStringBuilder::ckAppendLine(sb,"[",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "telefones" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "numero" + Chr(34) + ": " + Chr(34) + "19995555555" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "id" + Chr(34) + ": 2541437",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cnpj" + Chr(34) + ": " + Chr(34) + "11395551000164" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "rua" + Chr(34) + ": " + Chr(34) + "R XAVIER AUGUSTO ROGGE, 22" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "complemento" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "contatos" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "J" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "razao_social" + Chr(34) + ": " + Chr(34) + "SOUP BRASIL LTDA - ME" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "nome_fantasia" + Chr(34) + ": " + Chr(34) + "SOUP BRASIL" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "bairro" + Chr(34) + ": " + Chr(34) + "ABC DOS COLIBRIS" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cidade" + Chr(34) + ": " + Chr(34) + "TEST" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "inscricao_estadual" + Chr(34) + ": " + Chr(34) + "222.102.222.116" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "observacao" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "id" + Chr(34) + ": 2209595,",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "ultima_alteracao" + Chr(34) + ": " + Chr(34) + "2016-12-26 16:22:34" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cep" + Chr(34) + ": " + Chr(34) + "13555000" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "suframa" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "estado" + Chr(34) + ": " + Chr(34) + "SP" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "emails" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "email" + Chr(34) + ": " + Chr(34) + "somebody@terra.com.br" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "id" + Chr(34) + ": 1065557",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "excluido" + Chr(34) + ": false",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  },",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "telefones" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cnpj" + Chr(34) + ": " + Chr(34) + "12496555500180" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "rua" + Chr(34) + ": " + Chr(34) + "AV ROLF WIEST, 100" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "complemento" + Chr(34) + ": " + Chr(34) + "ANDAR 7 SALA 612 A 620" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "contatos" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "J" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "razao_social" + Chr(34) + ": " + Chr(34) + "SIMPLE SOFTWARE LTDA" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "nome_fantasia" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "bairro" + Chr(34) + ": " + Chr(34) + "DOM ZETIRO" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cidade" + Chr(34) + ": " + Chr(34) + "APARTVILLE" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "inscricao_estadual" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "observacao" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "id" + Chr(34) + ": 2255594,",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "ultima_alteracao" + Chr(34) + ": " + Chr(34) + "2016-12-26 16:28:31" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cep" + Chr(34) + ": " + Chr(34) + "89255505" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "suframa" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "estado" + Chr(34) + ": " + Chr(34) + "SC" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "emails" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "excluido" + Chr(34) + ": false",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  },",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "telefones" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "numero" + Chr(34) + ": " + Chr(34) + "1938655556" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "id" + Chr(34) + ": 2555438",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cnpj" + Chr(34) + ": " + Chr(34) + "00003555500153" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "rua" + Chr(34) + ": " + Chr(34) + "AV ABCDEF PINTO CATAO, 18" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "complemento" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "contatos" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "telefones" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"          {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "numero" + Chr(34) + ": " + Chr(34) + "1999655554" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "id" + Chr(34) + ": 2555559",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"          }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "cargo" + Chr(34) + ": " + Chr(34) + "zzz de compras" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "nome" + Chr(34) + ": " + Chr(34) + "Gerard" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "emails" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"          {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "email" + Chr(34) + ": " + Chr(34) + "gerard@terra.com.br" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"            " + Chr(34) + "id" + Chr(34) + ": 1065559",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"          }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "id" + Chr(34) + ": 844485,",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "excluido" + Chr(34) + ": false",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "J" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "razao_social" + Chr(34) + ": " + Chr(34) + "TIDY TECNOLOGIA LTDA - EPP" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "nome_fantasia" + Chr(34) + ": " + Chr(34) + "TIDY" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "bairro" + Chr(34) + ": " + Chr(34) + "TUNA" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cidade" + Chr(34) + ": " + Chr(34) + "JAGUAR" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "inscricao_estadual" + Chr(34) + ": " + Chr(34) + "395.222.441.222" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "observacao" + Chr(34) + ": " + Chr(34) + "ligar sempre depois das 14hs" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "id" + Chr(34) + ": 2255597,",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "ultima_alteracao" + Chr(34) + ": " + Chr(34) + "2016-12-28 07:31:52" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "cep" + Chr(34) + ": " + Chr(34) + "13555500" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "suframa" + Chr(34) + ": " + Chr(34) + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "estado" + Chr(34) + ": " + Chr(34) + "SP" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "emails" + Chr(34) + ": [",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      {",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "email" + Chr(34) + ": " + Chr(34) + "xi@tidy.com.br" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "tipo" + Chr(34) + ": " + Chr(34) + "T" + Chr(34) + ",",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"        " + Chr(34) + "id" + Chr(34) + ": 10655558",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"      }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    ],",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"    " + Chr(34) + "excluido" + Chr(34) + ": false",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"  }",bCrlf)
    CkStringBuilder::ckAppendLine(sb,"]",bCrlf)

    ; Load the JSON array into a JsonArray:
    jsonArray.i = CkJsonArray::ckCreate()
    If jsonArray.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkJsonArray::ckLoadSb(jsonArray,sb)
    If success <> 1
        Debug CkJsonArray::ckLastErrorText(jsonArray)
        CkStringBuilder::ckDispose(sb)
        CkJsonArray::ckDispose(jsonArray)
        ProcedureReturn
    EndIf

    ; Get some information from each record in the array.
    numRecords.i = CkJsonArray::ckSize(jsonArray)
    i.i = 0
    While i < numRecords
        Debug "------ Record " + Str(i) + " -------"

        jsonRecord.i = CkJsonArray::ckObjectAt(jsonArray,i)

        ; Examine information for this record
        numTelefones.i = CkJsonObject::ckSizeOfArray(jsonRecord,"telefones")
        Debug "Number of telefones: " + Str(numTelefones)
        j.i = 0
        While j < numTelefones
            CkJsonObject::setCkJ(jsonRecord, j)
            Debug "  telefones numero: " + CkJsonObject::ckStringOf(jsonRecord,"telefones[j].numero")
            Debug "  telefones tipo: " + CkJsonObject::ckStringOf(jsonRecord,"telefones[j].tipo")
            Debug "  telefones id: " + CkJsonObject::ckStringOf(jsonRecord,"telefones[j].id")
            j = j + 1
        Wend

        Debug "cnpj: " + CkJsonObject::ckStringOf(jsonRecord,"cnpj")
        Debug "rua: " + CkJsonObject::ckStringOf(jsonRecord,"rua")
        ; ...

        numContatos.i = CkJsonObject::ckSizeOfArray(jsonRecord,"contatos")
        Debug "Number of contatos: " + Str(numContatos)
        j = 0
        While j < numContatos
            CkJsonObject::setCkJ(jsonRecord, j)

            numTelefones = CkJsonObject::ckSizeOfArray(jsonRecord,"contatos[j].telefones")
            Debug "  Number of telefones: " + Str(numTelefones)
            k.i = 0
            While k < numTelefones
                CkJsonObject::setCkK(jsonRecord, k)
                Debug "  telefones numero: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].telefones[k].numero")
                Debug "  telefones tipo: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].telefones[k].tipo")
                Debug "  telefones id: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].telefones[k].id")
                k = k + 1
            Wend

            Debug "  cargo: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].cargo")

            numEmails.i = CkJsonObject::ckSizeOfArray(jsonRecord,"contatos[j].emails")
            Debug "  Number of emails: " + Str(numEmails)
            k = 0
            While k < numEmails
                CkJsonObject::setCkK(jsonRecord, k)
                Debug "  emails email: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].emails[k].email")
                Debug "  emails tipo: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].emails[k].tipo")
                Debug "  emails id: " + CkJsonObject::ckStringOf(jsonRecord,"contatos[j].emails[k].id")
                k = k + 1
            Wend

            j = j + 1
        Wend

        CkJsonObject::ckDispose(jsonRecord)

        i = i + 1
    Wend

    ; The output for the above code is:

    ; 	------ Record 0 -------
    ; 	Number of telefones: 1
    ; 	  telefones numero: 19995555555
    ; 	  telefones tipo: T
    ; 	  telefones id: 2541437
    ; 	cnpj: 11395551000164
    ; 	rua: R XAVIER AUGUSTO ROGGE, 22
    ; 	Number of contatos: 0
    ; 	------ Record 1 -------
    ; 	Number of telefones: 0
    ; 	cnpj: 12496555500180
    ; 	rua: AV ROLF WIEST, 100
    ; 	Number of contatos: 0
    ; 	------ Record 2 -------
    ; 	Number of telefones: 1
    ; 	  telefones numero: 1938655556
    ; 	  telefones tipo: T
    ; 	  telefones id: 2555438
    ; 	cnpj: 00003555500153
    ; 	rua: AV ABCDEF PINTO CATAO, 18
    ; 	Number of contatos: 1
    ; 	  Number of telefones: 1
    ; 	  telefones numero: 1999655554
    ; 	  telefones tipo: T
    ; 	  telefones id: 2555559
    ; 	  cargo: zzz de compras
    ; 	  Number of emails: 1
    ; 	  emails email: gerard@terra.com.br
    ; 	  emails tipo: T
    ; 	  emails id: 1065559
    ; 


    CkStringBuilder::ckDispose(sb)
    CkJsonArray::ckDispose(jsonArray)


    ProcedureReturn
EndProcedure