我在這里的示例中創建了一個類: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);
知道如何解決這個問題嗎?
編輯:這是因為“語言”是列舉。如何序列化列舉?
uj5u.com熱心網友回復:
您可以使用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,
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494835.html
