在将Dart编码/解码为JSON之前,我询问question,但是,建议的库并不完整,我决定手动处理它。Dart将列表转换为JSON编码的映射条目
目标是将这些对象转换为地图。
class Parent extends Object {
int id;
String name;
List<Child> listChild = new List<Child>();
Map toMap() => {"id":id, "name":name, "listChild":listChild};
}
class Child extends Object {
int id;
String childName;
Map toMap() => {"id":id, "childName":childName};
}
在做
print(JSON.encode(parent.toMap()));
我看到它去这里,任何建议如何使这项工作?
if (!stringifyJsonValue(object)) {
checkCycle(object);
try {
var customJson = _toEncodable(object);
if (!stringifyJsonValue(customJson)) {
throw new JsonUnsupportedObjectError(object);
}
_removeSeen(object);
} catch (e) {
throw new JsonUnsupportedObjectError(object, cause : e);
}
}
}
,解决了我的问题。我一直在努力找到一些关于转换API的文档,它清楚地提到了对json转换的对象,你能分享你从中得到的链接吗? – javapadawan 2014-09-14 16:34:22
嗨,很高兴听到它帮助!我认为我查看了json.dart的源代码以查明,但我不再确定:https://chromiumcodereview.appspot.com/10914009/patch/7001/6002 – Dafen 2014-09-14 18:35:52
该文档位于JSON.encode:https ://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-convert.JsonCodec#id_encode。它指出任何不直接对应于JSON文字(num/String/bool/null/List/Map)的对象都将通过toEncodable函数发送。您可以将'JSON.encode(p)'更改为'JSON.encode(p,(x)=> x.toMap())',它应该适用于具有toMap方法的对象。 – lrn 2014-09-15 12:59:25