如何编辑(更新)JSON 文件中的数据 flutter
How to Edit(Update) data in JSON file flutter
我正在尝试将特定值更新为外部存储中的 JSON 文件。
虽然我可以写入文件,但它正在用单个数据替换整个 JSON 文件。
//这个是用单个值替换整个文档
Future setBookmark(int questionId, String isBookmark) async {
Map<String, dynamic> content = {questionId.toString(): isBookmark};
var dir = await getExternalStorageDirectory();
var testdir = new Io.Directory('${dir.path}/BCS/bcs.json');
File jsonFile = File(dir.path + "/BCS/" + "bcs.json");
Map<String, dynamic> jsonFileContent =
json.decode(jsonFile.readAsStringSync());
jsonFileContent.addAll(content);
jsonFile.writeAsStringSync(json.encode(_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark));
}
//这是临时更改值但不写入文件
Future setBookmark(int questionId, String isBookmark) async {
_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark;
}
您需要写下整个问题列表。把它分成两个语句
Future setBookmark(int questionId, String isBookmark) async {
// update the list
_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark;
// and write it
jsonFile.writeAsStringSync(json.encode(_listQuestions));
}
我正在尝试将特定值更新为外部存储中的 JSON 文件。
虽然我可以写入文件,但它正在用单个数据替换整个 JSON 文件。
//这个是用单个值替换整个文档
Future setBookmark(int questionId, String isBookmark) async {
Map<String, dynamic> content = {questionId.toString(): isBookmark};
var dir = await getExternalStorageDirectory();
var testdir = new Io.Directory('${dir.path}/BCS/bcs.json');
File jsonFile = File(dir.path + "/BCS/" + "bcs.json");
Map<String, dynamic> jsonFileContent =
json.decode(jsonFile.readAsStringSync());
jsonFileContent.addAll(content);
jsonFile.writeAsStringSync(json.encode(_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark));
}
//这是临时更改值但不写入文件
Future setBookmark(int questionId, String isBookmark) async {
_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark;
}
您需要写下整个问题列表。把它分成两个语句
Future setBookmark(int questionId, String isBookmark) async {
// update the list
_listQuestions
.firstWhere((question) => question.id == questionId)
.bookmark = isBookmark;
// and write it
jsonFile.writeAsStringSync(json.encode(_listQuestions));
}