{ data: ... }
Здесь вы получаете единственный объект
[{ data: ... }]
Здесь вы получаете список этого объекта.
Если вы опубликовали свои классы моделей, просто отредактируйте добавьте следующее:
1) поместите ваш образец JSON.
2) и просто покажите код, в котором вы получаете ошибку, иначе блок кода будет оценен.
Итак, что я сделал, это создал пример от вас json, который вы предоставили:
Ниже приведен пример json, который вы предоставили:
[
{
"name": "Amet do id ea velit",
"isMajor": true,
"topics": [
{
"name": "Elit exercitation excepteur",
"contents": [
{
"title": "Ad id irure aute exercitation occaecat nostrud",
"body": "Cupidatat nisi ad quis officia aliqua fugiat ullamco",
"isImportant": false
}
]
}
]
}
]
проверьте класс модели ниже для json, который вы предоставили
// To parse this JSON data, do
//
// final subject = subjectFromJson(jsonString);
import 'dart:convert';
List<Subject> subjectFromJson(String str) => List<Subject>.from(json.decode(str).map((x) => Subject.fromJson(x)));
String subjectToJson(List<Subject> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class Subject {
String name;
bool isMajor;
List<Topic> topics;
Subject({
this.name,
this.isMajor,
this.topics,
});
factory Subject.fromJson(Map<String, dynamic> json) => Subject(
name: json["name"],
isMajor: json["isMajor"],
topics: List<Topic>.from(json["topics"].map((x) => Topic.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"name": name,
"isMajor": isMajor,
"topics": List<dynamic>.from(topics.map((x) => x.toJson())),
};
}
class Topic {
String name;
List<Content> contents;
Topic({
this.name,
this.contents,
});
factory Topic.fromJson(Map<String, dynamic> json) => Topic(
name: json["name"],
contents: List<Content>.from(json["contents"].map((x) => Content.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"name": name,
"contents": List<dynamic>.from(contents.map((x) => x.toJson())),
};
}
class Content {
String title;
String body;
bool isImportant;
Content({
this.title,
this.body,
this.isImportant,
});
factory Content.fromJson(Map<String, dynamic> json) => Content(
title: json["title"],
body: json["body"],
isImportant: json["isImportant"],
);
Map<String, dynamic> toJson() => {
"title": title,
"body": body,
"isImportant": isImportant,
};
}
, просто проверьте код ниже:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:sample_project_for_api/model.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
List<Subject> subjectList = List();
List<Topic> topicList = List();
List<Content> contentList = List();
@override
void initState() {
super.initState();
loadYourData();
}
loadYourData() async {
String responseStr = await loadFromAssets();
List<Subject> subject = subjectFromJson(responseStr);
// here from above you complete subjects list
for (int i = 0; i < subject.length; i++) {
print(subject[i].isMajor.toString());
print(subject[i].name);
print(subject[i].topics.length);
topicList = subject[i].topics;
// here you get the topics list from above
for (int j = 0; j < topicList.length; j++) {
print(topicList[j].name);
contentList = topicList[j].contents;
// here you get the contents list
for (int z = 0; z < contentList.length; z++) {
print(contentList[z].body);
print(contentList[z].isImportant.toString());
print(contentList[z].title);
}
}
}
}
Future<String> loadFromAssets() async {
return await rootBundle.loadString('json/parse.json');
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: Text('Random Text sample')),
),
);
}
}