我得到以下错误。
Converting object to an encodable object failed: Instance of 'Patient'
#0 _JsonStringifier.writeObject (dart:convert/json.dart:674)
#1 _JsonStringifier.writeList (dart:convert/json.dart:724)
#2 _JsonStringifier.writeJsonValue (dart:convert/json.dart:706)
#3 _JsonStringifier.writeObject (dart:convert/json.dart:664)
#4 _JsonStringStringifier.printOn (dart:convert/json.dart:873)
#5 _JsonStringStringifier.stringify (dart:convert/json.dart:855)
#6 JsonEncoder.convert (dart:convert/json.dart:256)
#7 JsonCodec.encode (dart:convert/json.dart:155)
#8 Persistence.saveLatestPatients (/Users/dean/Library/Developer/CoreSimulator/Devices/570CC18D-95BF-4062-8523-9C78E106D0CF/data/Containers/Data/Application/70CAEFAA-4AE3-4CBF-A85F-39161E472C83/tmp/flutter_prototypev6jYbr/flutter_prototype/lib/utils/persistence.dart:32:23)
<asynchronous suspension>
#9 _HomeScreenState.fetchData.<anonymous closure> (/Users/dean/Librar<…>
我的 "病人 "类
import 'package:simple_moment/simple_moment.dart';
class Patient {
String guid;
String _name;
String _surname;
DateTime _updated;
Patient(String guid) {
this.guid = guid;
}
String get name => _name;
set name(v) => _name = v;
String get surname => _surname;
set surname(v) => _surname = v;
DateTime get updated => _updated;
set updated(v) => _updated = v;
// Helper functions
String getFullName() => '$_name $_surname';
String getRelativeLastUpdated() {
var moment = new Moment.now();
return moment.from(_updated);
}
}
你不能随便将任意类实例转换为JSON。
该类需要实现 toEncodable
https:/api.dartlang.orgstable1.24.3dart-convertJsonEncoder-class.html。
https:/pub.dartlang.orgpackagesjson_serializable。 是一个生成代码的包,这样你就不需要手动编写代码了。
在我的案例中,我试图在地图对象中使用一个整数键.一旦我将其转换为String,错误就解决了。祝您好运。
你不需要添加任何库。你只需要在你的对象中实现fromJson和toJson函数。
例如,你可以在你的对象中实现fromJson和toJson函数。
class LinkItem {
final String name;
final String url;
LinkItem({this.name, this.url});
LinkItem.fromJson(Map<String, dynamic> json)
: name = json['n'],
url = json['u'];
Map<String, dynamic> toJson() {
return {
'n': name,
'u': url,
};
}
}
然后你可以调用jsonEncode:
List<LinkItem> list = await getUserLinks();
list.add(linkItem);
String json = jsonEncode(list);
结果:
[{"n":"Google","u":"https://www.google.com/"},{"n":"Test","u":"https://www.test.com/"},{"n":"etc","u":"etc"}]