如何将DateTime
对象转换为json?它抛出Converting object to an encodable object failed.
,这是一个bug还是只是dart
尚未支持它?如果你们知道一些解决方法,请告诉我。
您也可以通过toEncodable参数创建自己的自定义编码器,而不是使用包装器。
import 'dart:convert' show JSON;
void main() {
var dt = new DateTime.now();
var str = JSON.encode(dt, toEncodable: myEncode);
print(str);
}
dynamic myEncode(dynamic item) {
if(item is DateTime) {
return item.toIso8601String();
}
return item;
}
第一:JSON不支持日期/时间编码。这通常是通过约定来完成的,具体取决于另一方 - 通常是字符串表示(例如ISO8601,但Microsoft的ASP.NET使用自定义格式)。
第二名:How to convert an object containing DateTime fields to JSON in Dart? (简而言之:运行时不会序列化DateTime。您需要创建一个包含自定义序列化逻辑的包装器。)
您也可以在Dart中转换您的地图。
Map<String, dynamic> encodeMap(Map<String, dynamic> map) {
map.forEach((key, value) {
if (value is DateTime) {
map[key] = value.toString();
}
});
return map;
}
用法:var _map = encodeMap(_data);