在將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