首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Dart中将Map编码为Json?

如何在Dart中将Map编码为Json?
EN

Stack Overflow用户
提问于 2021-12-02 18:31:13
回答 2查看 55关注 0票数 0

我正在尝试用下面的代码将Map转换成json:

代码语言:javascript
运行
复制
String ecoded = json.encode({
  DateTime.now(): ["Sample data", 3,true,"Example", 2],
});

但是编译器给出了以下错误:

代码语言:javascript
运行
复制
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都是这样的:

代码语言:javascript
运行
复制
Map<String,dynamic>

发生此错误是因为存在列表

如果有人知道如何将Map转换为json,请回答这个问题。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-12-02 18:54:41

Json仅支持Strings作为键。因此,如果您想使用DateTimes作为密钥,您必须首先手动转换它:

代码语言:javascript
运行
复制
String ecoded = json.encode({
    DateTime.now().toString(): ["Sample data", 3,true,"Example", 2],
});

代码语言:javascript
运行
复制
Map<String, dynamic> result = datetimeMap.map((k, v) => MapEntry('$k', v))
票数 1
EN

Stack Overflow用户

发布于 2021-12-02 19:07:13

在dart程序设计中,json.encode(DateTime.Now()),这是不可能的。您需要使用Iso8601String()toString()进行转换

代码语言:javascript
运行
复制
String ecoded = json.encode({
  DateTime.now().toIso8610String(): ["Sample data", 3,true,"Example", 2],
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70204738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档