我正在尝试用下面的代码将Map转换成json:
String ecoded = json.encode({
DateTime.now(): ["Sample data", 3,true,"Example", 2],
});
但是编译器给出了以下错误:
E/flutter (11773): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled
Exception: Converting object to an encodable object failed: _LinkedHashMap len:1
E/flutter (11773): #0 _JsonStringifier.writeObject
(dart:convert/json.dart:688:7)
E/flutter (11773): #1 _JsonStringStringifier.printOn
(dart:convert/json.dart:877:17)
E/flutter (11773): #2 _JsonStringStringifier.stringify
(dart:convert/json.dart:862:5)
E/flutter (11773): #3 JsonEncoder.convert (dart:convert/json.dart:262:30)
E/flutter (11773): #4 JsonCodec.encode (dart:convert/json.dart:172:45)
我多次将Map转换为json,但在所有情况下Map都是这样的:
Map<String,dynamic>
发生此错误是因为存在列表
如果有人知道如何将Map转换为json,请回答这个问题。
谢谢
发布于 2021-12-02 18:54:41
Json仅支持Strings
作为键。因此,如果您想使用DateTimes
作为密钥,您必须首先手动转换它:
String ecoded = json.encode({
DateTime.now().toString(): ["Sample data", 3,true,"Example", 2],
});
或
Map<String, dynamic> result = datetimeMap.map((k, v) => MapEntry('$k', v))
发布于 2021-12-02 19:07:13
在dart程序设计中,json.encode(DateTime.Now()),这是不可能的。您需要使用Iso8601String()
或toString()
进行转换
String ecoded = json.encode({
DateTime.now().toIso8610String(): ["Sample data", 3,true,"Example", 2],
});
https://stackoverflow.com/questions/70204738
复制相似问题