Dart
Dart
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 Dart Downloads
import 'package:chilkat/chilkat.dart';
void main() {
// 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.
final sb = CkStringBuilder();
final bCrlf = true;
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:
final jsonArray = CkJsonArray();
try {
jsonArray.loadSb(sb);
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
// Get some information from each record in the array.
final numRecords = jsonArray.size;
var i = 0;
while (i < numRecords) {
print('------ Record $i -------');
final jsonRecord = jsonArray.objectAt(i);
// Examine information for this record
var numTelefones = jsonRecord.sizeOfArray('telefones');
print('Number of telefones: $numTelefones');
var j = 0;
while (j < numTelefones) {
jsonRecord.j = j;
print(' telefones numero: ${jsonRecord.stringOf('telefones[j].numero')}');
print(' telefones tipo: ${jsonRecord.stringOf('telefones[j].tipo')}');
print(' telefones id: ${jsonRecord.stringOf('telefones[j].id')}');
j++;
}
print('cnpj: ${jsonRecord.stringOf('cnpj')}');
print('rua: ${jsonRecord.stringOf('rua')}');
// ...
final numContatos = jsonRecord.sizeOfArray('contatos');
print('Number of contatos: $numContatos');
j = 0;
while (j < numContatos) {
jsonRecord.j = j;
numTelefones = jsonRecord.sizeOfArray('contatos[j].telefones');
print(' Number of telefones: $numTelefones');
var k = 0;
while (k < numTelefones) {
jsonRecord.k = k;
print(' telefones numero: ${jsonRecord.stringOf('contatos[j].telefones[k].numero')}');
print(' telefones tipo: ${jsonRecord.stringOf('contatos[j].telefones[k].tipo')}');
print(' telefones id: ${jsonRecord.stringOf('contatos[j].telefones[k].id')}');
k++;
}
print(' cargo: ${jsonRecord.stringOf('contatos[j].cargo')}');
final numEmails = jsonRecord.sizeOfArray('contatos[j].emails');
print(' Number of emails: $numEmails');
k = 0;
while (k < numEmails) {
jsonRecord.k = k;
print(' emails email: ${jsonRecord.stringOf('contatos[j].emails[k].email')}');
print(' emails tipo: ${jsonRecord.stringOf('contatos[j].emails[k].tipo')}');
print(' emails id: ${jsonRecord.stringOf('contatos[j].emails[k].id')}');
k++;
}
j++;
}
i++;
}
// 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
//
}