У меня проблема с парсином в этом json, потому что я могу разобрать "indice", но я могу разобрать "capitulos". Я получаю ошибку: исключение произошло. _TypeError (тип 'String' не является подтипом типа 'Map') Как я могу проанализировать список внутри списка, пожалуйста? Я прочитал замечательную статью Пуджи Бхаумик, но id не скрывает этот пример.
[
{
"id": "1",
"title": "title",
"origem": "origin",
"tipo": "type",
"indice": [
{
"id": 1,
"title": "title 1"
},
{
"id": 2,
"title": "title 2"
},
],
"capitulos": [
[
"chapter 1 text 1",
"chapter 1 text 2",
"chapter 1 text 3"
],
[
"chapter 2 text 1",
"chapter 2 text 2",
"chapter 2 text 3"
],
]
}
]
Моя модель:
class DocumentosList {
final List<Documento> documentos;
DocumentosList({
this.documentos,
});
factory DocumentosList.fromJson(List<dynamic> parsedJson) {
List<Documento> documentos = new List<Documento>();
documentos = parsedJson.map((i) => Documento.fromJson(i)).toList();
return new DocumentosList(documentos: documentos);
}
}
class Documento {
String id;
String title;
String origem;
String tipo;
List<IndiceItem> indice;
List<Capitulos> capitulos;
Documento({
this.id,
this.title,
this.origem,
this.tipo,
this.indice,
this.capitulos,
});
factory Documento.fromJson(Map<String, dynamic> parsedJson) {
var list = parsedJson['indice'] as List;
List<IndiceItem> indice = list.map((i) => IndiceItem.fromJson(i)).toList();
var listCapitulos = parsedJson['capitulos'];
List<Capitulos> capitulos =
listCapitulos.map((i) => Capitulos.fromJson(i)).toList();
return new Documento(
id: parsedJson['id'],
title: parsedJson['title'],
origem: parsedJson['origem'],
indice: indice,
capitulos: capitulos,
);
}
}
class IndiceItem {
String id;
String title;
IndiceItem({
this.id,
this.title,
});
factory IndiceItem.fromJson(Map<String, dynamic> parsedJson) {
return IndiceItem(
id: parsedJson['id'].toString(),
title: parsedJson['title'],
);
}
}
class Capitulos {
final List<Capitulo> capitulos;
Capitulos({this.capitulos});
factory Capitulos.fromJson(List<dynamic> parsedJson) {
List<Capitulo> capitulos = new List<Capitulo>();
capitulos = parsedJson.map((i) => Capitulo.fromJson(i)).toList();
return new Capitulos(capitulos: capitulos);
}
}
class Capitulo {
final List<String> paragrafos;
Capitulo({this.paragrafos});
factory Capitulo.fromJson(Map<String, dynamic> parsedJson) {
var paragrafosFromJson = parsedJson['paragrafos'];
List<String> paragrafosList = paragrafosFromJson.cast<String>();
return new Capitulo(
paragrafos: paragrafosList,
);
}
}