[英]Converting object to an encodable object failed in Flutter
我在這里的示例中創建了一個類: https ://docs.flutter.dev/development/data-and-backend/json
class NewUser {
String Username;
String Mail;
String Password;
Lang Language;
NewUser(this.Username, this.Mail, this.Password, this.Language);
NewUser.fromJson(Map<String, dynamic> json)
: Username = json['Username'],
Mail = json['Mail'],
Password = json['Password'],
Language = json['Language'];
Map<String, dynamic> toJson() => {
'Username': Username,
'Mail': Mail,
'Password': Password,
'Language': Language
};
}
當我嘗試調用 toJson 時失敗:將對象轉換為可編碼對象失敗:'NewUser' 的實例
NewUser user = NewUser('username', 'mail', 'password', Lang.cs);
String json = jsonEncode(user);
print(json);
知道如何解決這個問題嗎?
編輯:這是因為“語言”是枚舉。 如何序列化枚舉?
您可以使用Lang.name
編碼為 JSON 和Lang.values.byName(...)
從 JSON 解碼。 看看下面:
class NewUser {
String Username;
String Mail;
String Password;
Lang Language;
NewUser(this.Username, this.Mail, this.Password, this.Language);
NewUser.fromJson(Map<String, dynamic> json)
: Username = json['Username'],
Mail = json['Mail'],
Password = json['Password'],
Language = Lang.values.byName(json['Language']);
Map<String, dynamic> toJson() => {
'Username': Username,
'Mail': Mail,
'Password': Password,
'Language': Language.name,
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.