[英]How to update data in local JSON file in Flutter (Dart)
我在我的 flutter 应用程序中使用本地 JSON 文件。 单击按钮,我想更改同一个 JSON 文件中的一项。 JSON 文件 (UserData.json) 是:
{
"name": "name1",
"companyName": "companyName1",
"designation": "designation1",
"isAdmin": "FALSE"
},
{
"name": "name2",
"companyName": "companyName2",
"designation": "designation2",
"isAdmin": "FALSE"
},
{
"name": "name3",
"companyName": "companyName3",
"designation": "designation3",
"isAdmin": "FALSE"
},
{
"name": "name4",
"companyName": "companyName4",
"designation": "designation4",
"isAdmin": "FALSE"
}
]
model (user_model.dart) 是:
final String name;
final String companyName;
final String designation;
final String isAdmin;
User({
this.name,
this.companyName,
this.designation,
this.isAdmin,
});
factory User.fromJson(Map<String, dynamic> json) {
return User(
name: json['name'] as String,
companyName: json['companyName'] as String,
designation: json['designation'] as String,
isAdmin: json['isAdmin'] as String,
);
}
Map<String, dynamic> toJson() {
return <String, dynamic>{
'name': name,
'companyName': companyName,
'designation': designation,
'isAdmin': isAdmin,
};
}
}
出于测试目的,我想更新 JSON 文件中第一个用户的“companyName”。 按下按钮时调用的方法(尚未完成)是:
updateJson() async {
var rawJSON = await json.decode(await DefaultAssetBundle.of(context)
.loadString('user_data/UserData.json'));
rawJSON[0]['companyName'] = "NewCompany";
var var1 = json.encode(rawJSON);
}
请帮助我更新 JSON 文件的代码
我不认为你能做到这一点,因为当你使用 Dart 读取 JSON Object 时,你正在加载一个字符串而不是 JSON object。最终它会很复杂,即使你添加方法到JSON object、Dart 仍会将所有内容读取为字符串。 然后在对字符串使用jsonDecode方法时将它们转换为 Dart 对象。
您不能直接更新.json
文件。 请改用以下步骤:
globals.dart
String userJson = json.encode(your json file);
import "./globals.dart" as globals;
List<User> users = json.decode(globals.userJson);
4.然后您可以更新 json 参数如下:
updateJson() async {
users[0]['companyName'] = "NewCompany";
globals.userJson = json.encode(users);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.