[英]Dart/Flutter : Avoid Method parsing in Map , when converting to JSON?
在 Dart / Flutter 中,當將 map (其中包含閉包方法)轉換為 Z466DEEC76ECDF1F,IDFCA6D387 時出現以下錯誤
Converting object to an encodable object failed: Closure: () => dynamic
Map 具有:
orderedMap1["fooddelete"] = () => deleteItemFunction(
singleitem["orderId"], singleitem["id"], singleitem["shopId"]);
如果在上面的行注釋,則 jsonEncode 有效,否則拋出上述錯誤。
將Map解析為Json時如何指示jsonEncode跳過閉包?
將閉包存儲在要編碼為 JSON 的同一個Map
中似乎非常值得懷疑,但如果必須,您可以對其進行過濾后的副本進行編碼:
var encoded = jsonEncode({
for (var entry in orderedMap1.entries)
if (entry.value is! Function) entry.key: entry.value,
});
我想您也可以使用jsonEncode
的toEncodable
參數將閉包轉換為其他東西,盡管我不確定這對您有什么好處,因為接收者對此無能為力。 以下將用null
替換閉包:
var encoded = jsonEncode(orderedMap, toEncodable: (value) {
if (value is Function) {
return null;
}
throw UnsupportedError('Cannot convert to JSON: $value');
});
選項1:使用orderedMap1.remove("fooddelete")
刪除“fooddelete”鍵,然后解析它。
選項2:將您的閉包放在雙引號內。 所以你可以將它保存為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.