写入本地 json 文件
Posted
技术标签:
【中文标题】写入本地 json 文件【英文标题】:Writing to a Local json file dart flutter 【发布时间】:2019-01-19 07:01:11 【问题描述】:我正在创建一个允许用户保存小数据的应用程序。我的资产文件夹中有一个 json 文件,我想创建一个可以向其写入更多 json 数据的应用程序。路径:assets/vault.json
vault.json
[
"name":"Ash",
"age":"22",
"hobby" : "golf"
,
"name":"philip",
"age":"17",
"hobby" : "fishing"
,
"name":"charles",
"age":"32",
"hobby" : "drawing"
]
但是我一直在向 json 文件添加更多列表。
在我的 main.dart 中,我创建了 3 个用于输入的文本字段和一个用于触发 writeToFile(arg1,arg2,arg3) 的按钮 onPress。
这是我尝试过的:
void writeToFile(String hobbyy, String agee, String namee)
print("Writing to file!");
Map<String, dynamic> content = new Map();
content1 = name: namee;
content2 = age: agee;
content3 = hobby: hobbyy;
content.addAll(content1);
content.addAll(content2);
content.addAll(content3);
print(content); //working fine
Future<String> _loadAVaultAsset() async
return await rootBundle.loadString('assets/vault.json');
Future loadVault() async
String jsonString = await _loadAVaultAsset();
final jsonResponse = json.decode(jsonString);
var add = jsonResponse.toString();
add = add.replaceFirst(new RegExp(r']'), ","+content.toString()+"]");
print(add); //shows the full json string that I want.
//How to add/replace (add) into the json file?
虽然我得到了我想要的 json 字符串,但我无法在 json 文件中反映它。
这是我的 vault_model.dart(以防万一):
class UsersList
final List<Users> user;
UsersList(
this.user,
);
factory UsersList.fromJson(List<dynamic> parsedJson)
List<Users> entireList = new List<Users>();
entireList = parsedJson.map((i)=>Users.fromJson(i)).toList();
return UsersList(
user: entireList,
);
class Users
final String name;
final String age;
final String hobby;
Users(
this.name,
this.age,
this.hobby
);
factory Users.fromJson(Map<String, dynamic> json)
return new Users(
name: json['name'],
age: json['age'],
hobby: json['hobby'],
);
请教我如何在 assets/vault.json 路径中用新字符串(添加)替换旧的 json 字符串。
【问题讨论】:
【参考方案1】:您可以将其存储在应用程序的文件系统中,而不是存储在rootBundle
中。参考here
【讨论】:
【参考方案2】:您似乎无法在运行时写入资产中的文件(请参阅此post 以供参考)。这个page 描述了如何使用 path_provider 来查找本地路径和读/写本地文件。
【讨论】:
以上是关于写入本地 json 文件的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将数据写入本地 json 文件,除了角度之外啥都没有?
仅使用 Angular 7 将 json 数据写入本地 JSON 文件