Opa, boa tarde,
como faco para acessar mais de um nivel do meu JSON,
por exemplo ..eu tenho o JSON.
resultado do JSON
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
...
webclient.dar
Future<List<Pessoa>> findAll() async {
http.Client client =
InterceptedClient.build(interceptors: [LoggingInterceptor()]);
final http.Response response = await client
.get(Uri.parse('https://jsonplaceholder.typicode.com/users'))
.timeout(const Duration(seconds: 55));
// print('AQUIIII: ${response.body}');
// final List<dynamic> decodedJson = jsonDecode(response.body);
final List<dynamic> decodedJson = json.decode(response.body);
final List<Pessoa> pessoas = [];
for (Map<String, dynamic> pessoaJson in decodedJson) {
final Map<String, dynamic> EnderecoJson = pessoaJson['address'];
final Map<String, dynamic> CompanyJson = pessoaJson['company'];
final Map<String, dynamic> GeoJson = pessoaJson['address']['geo']; // CREIO QUE O PROBLEMA ESTEVA AQUI :(
final Pessoa pessoa = Pessoa(
pessoaJson['id'],
pessoaJson['name'],
pessoaJson['username'],
pessoaJson['email'],
Enderaco(
EnderecoJson['street'],
EnderecoJson['suite'],
EnderecoJson['city'],
EnderecoJson['zipcode'],
),
Geo(
GeoJson['lat'],
GeoJson['lnt'],
),
pessoaJson['phone'],
pessoaJson['website'],
Company(
CompanyJson['name'],
CompanyJson['catchPhrase'],
CompanyJson['bs'],
),
);
pessoas.add(pessoa);
}
return pessoas;
}
MODELS
import 'package:api/models/company.dart';
import 'package:api/models/enderaco.dart';
import 'package:api/models/geo.dart';
class Pessoa {
final int id;
final String name;
final String username;
final String email;
final Enderaco enderaco;
final Geo geo;
final String phone;
final String website;
final Company company;
Pessoa(
this.id,
this.name,
this.username,
this.email,
this.enderaco,
this.geo,
this.phone,
this.website,
this.company,
);
}
class Enderaco {
final String street;
final String suite;
final String city;
final String zipcode;
Enderaco(
this.street,
this.suite,
this.city,
this.zipcode,
);
}
class Geo {
final String lat;
final String lng;
Geo(
this.lat,
this.lng,
);
}
O problema todo eh que eu nao consigo puxar os dados quando o JSON esta encadeado. por exemplo eu consigo acessar normalmente os dados de street que esta dentro de address, porem nao consigo acessar geo que esta dentro de address.