【问题标题】:How to encode Map into Json in Dart?如何在 Dart 中将 Map 编码为 Json?
【发布时间】:2022-01-09 06:09:32
【问题描述】:

我正在尝试使用以下代码将 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>

出现这个错误是因为有List

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

谢谢

【问题讨论】:

    标签: json flutter dictionary dart jsonexception


    【解决方案1】:

    在飞镖编程中,json.encode(DateTime.Now()) 是不可能的。您需要使用Iso8601String()toString()进行转换

    String ecoded = json.encode({
      DateTime.now().toIso8610String(): ["Sample data", 3,true,"Example", 2],
    });
    

    【讨论】:

      【解决方案2】:

      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))
      

      【讨论】:

        猜你喜欢
        • 2022-01-08
        • 2021-06-06
        • 2021-06-07
        • 1970-01-01
        • 2021-01-21
        • 2015-07-31
        • 2021-02-05
        • 2019-10-03
        • 2017-11-02
        相关资源
        最近更新 更多