Perl
Perl
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 Perl Downloads
use chilkat();
$success = 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 = chilkat::CkStringBuilder->new();
$bCrlf = 1;
$sb->AppendLine("[",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"telefones\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"numero\": \"19995555555\",",$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 2541437",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"cnpj\": \"11395551000164\",",$bCrlf);
$sb->AppendLine(" \"rua\": \"R XAVIER AUGUSTO ROGGE, 22\",",$bCrlf);
$sb->AppendLine(" \"complemento\": \"\",",$bCrlf);
$sb->AppendLine(" \"contatos\": [",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"tipo\": \"J\",",$bCrlf);
$sb->AppendLine(" \"razao_social\": \"SOUP BRASIL LTDA - ME\",",$bCrlf);
$sb->AppendLine(" \"nome_fantasia\": \"SOUP BRASIL\",",$bCrlf);
$sb->AppendLine(" \"bairro\": \"ABC DOS COLIBRIS\",",$bCrlf);
$sb->AppendLine(" \"cidade\": \"TEST\",",$bCrlf);
$sb->AppendLine(" \"inscricao_estadual\": \"222.102.222.116\",",$bCrlf);
$sb->AppendLine(" \"observacao\": \"\",",$bCrlf);
$sb->AppendLine(" \"id\": 2209595,",$bCrlf);
$sb->AppendLine(" \"ultima_alteracao\": \"2016-12-26 16:22:34\",",$bCrlf);
$sb->AppendLine(" \"cep\": \"13555000\",",$bCrlf);
$sb->AppendLine(" \"suframa\": \"\",",$bCrlf);
$sb->AppendLine(" \"estado\": \"SP\",",$bCrlf);
$sb->AppendLine(" \"emails\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(' \'email\': \'somebody@terra.com.br\',',$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 1065557",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"excluido\": false",$bCrlf);
$sb->AppendLine(" },",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"telefones\": [",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"cnpj\": \"12496555500180\",",$bCrlf);
$sb->AppendLine(" \"rua\": \"AV ROLF WIEST, 100\",",$bCrlf);
$sb->AppendLine(" \"complemento\": \"ANDAR 7 SALA 612 A 620\",",$bCrlf);
$sb->AppendLine(" \"contatos\": [",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"tipo\": \"J\",",$bCrlf);
$sb->AppendLine(" \"razao_social\": \"SIMPLE SOFTWARE LTDA\",",$bCrlf);
$sb->AppendLine(" \"nome_fantasia\": \"\",",$bCrlf);
$sb->AppendLine(" \"bairro\": \"DOM ZETIRO\",",$bCrlf);
$sb->AppendLine(" \"cidade\": \"APARTVILLE\",",$bCrlf);
$sb->AppendLine(" \"inscricao_estadual\": \"\",",$bCrlf);
$sb->AppendLine(" \"observacao\": \"\",",$bCrlf);
$sb->AppendLine(" \"id\": 2255594,",$bCrlf);
$sb->AppendLine(" \"ultima_alteracao\": \"2016-12-26 16:28:31\",",$bCrlf);
$sb->AppendLine(" \"cep\": \"89255505\",",$bCrlf);
$sb->AppendLine(" \"suframa\": \"\",",$bCrlf);
$sb->AppendLine(" \"estado\": \"SC\",",$bCrlf);
$sb->AppendLine(" \"emails\": [",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"excluido\": false",$bCrlf);
$sb->AppendLine(" },",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"telefones\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"numero\": \"1938655556\",",$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 2555438",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"cnpj\": \"00003555500153\",",$bCrlf);
$sb->AppendLine(" \"rua\": \"AV ABCDEF PINTO CATAO, 18\",",$bCrlf);
$sb->AppendLine(" \"complemento\": \"\",",$bCrlf);
$sb->AppendLine(" \"contatos\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"telefones\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(" \"numero\": \"1999655554\",",$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 2555559",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"cargo\": \"zzz de compras\",",$bCrlf);
$sb->AppendLine(" \"nome\": \"Gerard\",",$bCrlf);
$sb->AppendLine(" \"emails\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(' \'email\': \'gerard@terra.com.br\',',$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 1065559",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"id\": 844485,",$bCrlf);
$sb->AppendLine(" \"excluido\": false",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"tipo\": \"J\",",$bCrlf);
$sb->AppendLine(" \"razao_social\": \"TIDY TECNOLOGIA LTDA - EPP\",",$bCrlf);
$sb->AppendLine(" \"nome_fantasia\": \"TIDY\",",$bCrlf);
$sb->AppendLine(" \"bairro\": \"TUNA\",",$bCrlf);
$sb->AppendLine(" \"cidade\": \"JAGUAR\",",$bCrlf);
$sb->AppendLine(" \"inscricao_estadual\": \"395.222.441.222\",",$bCrlf);
$sb->AppendLine(" \"observacao\": \"ligar sempre depois das 14hs\",",$bCrlf);
$sb->AppendLine(" \"id\": 2255597,",$bCrlf);
$sb->AppendLine(" \"ultima_alteracao\": \"2016-12-28 07:31:52\",",$bCrlf);
$sb->AppendLine(" \"cep\": \"13555500\",",$bCrlf);
$sb->AppendLine(" \"suframa\": \"\",",$bCrlf);
$sb->AppendLine(" \"estado\": \"SP\",",$bCrlf);
$sb->AppendLine(" \"emails\": [",$bCrlf);
$sb->AppendLine(" {",$bCrlf);
$sb->AppendLine(' \'email\': \'xi@tidy.com.br\',',$bCrlf);
$sb->AppendLine(" \"tipo\": \"T\",",$bCrlf);
$sb->AppendLine(" \"id\": 10655558",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine(" ],",$bCrlf);
$sb->AppendLine(" \"excluido\": false",$bCrlf);
$sb->AppendLine(" }",$bCrlf);
$sb->AppendLine("]",$bCrlf);
# Load the JSON array into a JsonArray:
$jsonArray = chilkat::CkJsonArray->new();
$success = $jsonArray->LoadSb($sb);
if ($success != 1) {
print $jsonArray->lastErrorText() . "\r\n";
exit;
}
# Get some information from each record in the array.
$numRecords = $jsonArray->get_Size();
$i = 0;
while ($i < $numRecords) {
print "------ Record " . $i . " -------" . "\r\n";
# jsonRecord is a JsonObject
$jsonRecord = $jsonArray->ObjectAt($i);
# Examine information for this record
$numTelefones = $jsonRecord->SizeOfArray("telefones");
print "Number of telefones: " . $numTelefones . "\r\n";
$j = 0;
while ($j < $numTelefones) {
$jsonRecord->put_J($j);
print " telefones numero: " . $jsonRecord->stringOf("telefones[j].numero") . "\r\n";
print " telefones tipo: " . $jsonRecord->stringOf("telefones[j].tipo") . "\r\n";
print " telefones id: " . $jsonRecord->stringOf("telefones[j].id") . "\r\n";
$j = $j + 1;
}
print "cnpj: " . $jsonRecord->stringOf("cnpj") . "\r\n";
print "rua: " . $jsonRecord->stringOf("rua") . "\r\n";
# ...
$numContatos = $jsonRecord->SizeOfArray("contatos");
print "Number of contatos: " . $numContatos . "\r\n";
$j = 0;
while ($j < $numContatos) {
$jsonRecord->put_J($j);
$numTelefones = $jsonRecord->SizeOfArray("contatos[j].telefones");
print " Number of telefones: " . $numTelefones . "\r\n";
$k = 0;
while ($k < $numTelefones) {
$jsonRecord->put_K($k);
print " telefones numero: " . $jsonRecord->stringOf("contatos[j].telefones[k].numero") . "\r\n";
print " telefones tipo: " . $jsonRecord->stringOf("contatos[j].telefones[k].tipo") . "\r\n";
print " telefones id: " . $jsonRecord->stringOf("contatos[j].telefones[k].id") . "\r\n";
$k = $k + 1;
}
print " cargo: " . $jsonRecord->stringOf("contatos[j].cargo") . "\r\n";
$numEmails = $jsonRecord->SizeOfArray("contatos[j].emails");
print " Number of emails: " . $numEmails . "\r\n";
$k = 0;
while ($k < $numEmails) {
$jsonRecord->put_K($k);
print " emails email: " . $jsonRecord->stringOf("contatos[j].emails[k].email") . "\r\n";
print " emails tipo: " . $jsonRecord->stringOf("contatos[j].emails[k].tipo") . "\r\n";
print " emails id: " . $jsonRecord->stringOf("contatos[j].emails[k].id") . "\r\n";
$k = $k + 1;
}
$j = $j + 1;
}
$i = $i + 1;
}
# 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
#