-1

我有一个像这样的变量


  List<Map<String, String>> expense = [
    {
      "date": "01-03-2021",
      "person": "John",
    },
    {
      "date": "01-03-2021",
      "person": "John",
    }
    ];

进而

myVar = json.encode(myVar);

现在我如何回到与开始相同的类型变量?我试过这样做,但不能

json.decode(myVar).toList().map((e) => e as Map<String, String>)?.toList();
4

1 回答 1

0

你的类型转换做错了,你不应该调用toList()一个dynamic类型,你e as Map<String, String>也不能像e一个dynamic类型一样工作,Dart 将无法推断出所有东西的类型,因此将无法正确执行类型转换。以下是您可以转换 JSON 的方法:

List<Map<String, String>> expense = [
  {
    "date": "01-03-2021",
    "person": "John",
  },
  {
    "date": "01-03-2021",
    "person": "John",
  }
];

final myVar = jsonEncode(expense);
final result = (jsonDecode(myVar) as Iterable)
    .map((e) => Map<String, String>.from(e))
    ?.toList();

输出

MYVAR: [{"date":"01-03-2021","person":"John"},{"date":"01-03-2021","person":"John"}]
RESULT: [{date: 01-03-2021, person: John}, {date: 01-03-2021, person: John}]

您可以在 DartPad 上尝试完整示例

于 2021-04-16T19:52:25.610 回答