Json 在Dart/FLIFT中访问列表
我不熟悉Dart/FLAtter,正在从事一个项目,将一些JSON数据解析到Dart中的列表中。我一直在尝试访问列表,Dart文件2--u database.bpreading以选择条目。这在Dart中可能是一个简单的解决方案,但我尝试了许多使用Map的命令,但都没有用。谢谢你的帮助。代码如下:-Json 在Dart/FLIFT中访问列表,json,Json,我不熟悉Dart/FLAtter,正在从事一个项目,将一些JSON数据解析到Dart中的列表中。我一直在尝试访问列表,Dart文件2--u database.bpreading以选择条目。这在Dart中可能是一个简单的解决方案,但我尝试了许多使用Map的命令,但都没有用。谢谢你的帮助。代码如下:- Dart File # 1 ============= class DatabaseFileRoutines { Future<String> get _localPath async
Dart File # 1
=============
class DatabaseFileRoutines {
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<File> get _localFile async {
final path = await _localPath;
return File('$path/local_persistence.json');
}
Future<String> readJournals() async {
try {
final file = await _localFile;
if (!file.existsSync()) {
print("File does not exist: ${file.absolute}");
await writeBpreading('{"bpreadings": []}');
}
String contents = await file.readAsString();
return contents;
} catch (e) {
print("error readBpreading: $e");
return "";
}
}
Future<File> writeBpreading(String json) async {
final file = await _localFile;
return file.writeAsString('$json');
}
}
Database databaseFromJson(String str) {
final dataFromJson = json.decode(str);
return Database.fromJson(dataFromJson);
}
String databaseToJson(Database data) {
final dataToJson = data.toJson();
return json.encode(dataToJson);
}
class Database {
List<Bpreading> bpreading;
Database({
this.bpreading,
});
factory Database.fromJson(Map<String, dynamic> json) => Database(
bpreading: List<Bpreading>.from(
json["journals"].map((x) => Bpreading.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"journals": List<dynamic>.from(bpreading.map((x) => x.toJson())),
};
}
class Bpreading {
String id;
String date;
String time;
String lab1;
String lab2;
Bpreading({
this.id,
this.date,
this.time,
this.lab1,
this.lab2,
});
factory Bpreading.fromJson(Map<String, dynamic> json) => Bpreading(
id: json["id"],
date: json["date"],
time: json["time"],
lab1: json["lab1"],
lab2: json["lab2"],
);
Map<String, dynamic> toJson() => {
"id": id,
"date": date,
"time": time,
"lab1": lab1,
"lab2": lab2,
};
}
Dart file #2
============
class BpJournal extends StatefulWidget {
@override
BpJournalState createState() => BpJournalState();
}
class BpJournalState extends State<BpJournal> {
Database _database;
String dia;
Future<List<Bpreading>> _loadJournals() async {
await DatabaseFileRoutines().readJournals().then((journalsJson) {
_database = databaseFromJson(journalsJson);
_database.bpreading.sort((comp1, comp2) => comp2.date.compareTo(comp1.date));
});
return _database.bpreading;
}
请显示您的json的结构,如给出一个示例。json值的类型为字符串,并按预期手动捕获并存储在数据库中,如下所示:-Bpreading id:8765498 date:200706135125147565 time:135125147565 lab1:76 lab2:212实际上,我想从JSON访问数据列表并显示它以验证数据输入。对不起,我不知道JSON示例BPreading的原因。。被包装成一行。很抱歉,我没有正确理解您的问题,那么您在哪一行出错?我在你的代码中找不到任何错误。我们可以通过查看您的错误消息来尝试解决此问题。你所说的选择条目到底是什么意思?。您正在按日期对它们进行排序,以便筛选一些条目?假设你的json现在看起来像{'journals':[…]},如果我理解正确,你需要一个方法来访问形式为[{},…]的json。如果这是你的问题,请看一下你的json结构,比如举个例子,JSON值是String类型的,手动捕获并存储在数据库中,如下所示:-Bpreading id:8765498 date:200706135125147565 time:135125147565 lab1:76 lab2:212,我想从JSON访问数据列表并显示它以验证数据输入。对不起,我不知道JSON示例BPreading的原因。。被包装成一行。很抱歉,我没有正确理解您的问题,那么您在哪一行出错?我在你的代码中找不到任何错误。我们可以通过查看您的错误消息来尝试解决此问题。你所说的选择条目到底是什么意思?。您正在按日期对它们进行排序,以便筛选一些条目?假设您的json现在看起来像{'journals':[…]},如果我理解正确,您需要一个方法来访问形式为[{},…]的json。如果这是您的问题,请查看