首页 > 解决方案 > 如何将 JSON 解码为模型对象列表

问题描述

我正在使用下面的代码解码一个 JSON http 响应模型对象列表。它工作得很好,但是我问我如何将代码重写为

  1. 不使用类型转换“作为列表”
  2. 将类型“动态”替换为更具体的类型“代码模型”
final List<CodeModel> codes = (json.decode(response.body) as List)
  .map((dynamic model) => CodeModel.fromJson(model))
  .toList();

标签: jsonflutterdart

解决方案


通常,您应该避免在分析器可以为您解决的情况下使用明显的静态类型。

您可以将代码替换为:

  final codes =
      json.decode(response.body).map<CodeModel>((m) => CodeModel.fromJson(m)).toList();

  print(codes.runtimeType);

无需指定类型codes- 可以推断。

更改.map.map<CodeModel>告诉分析器 lambda 将返回 a CodeModel,因此toList将生成它们的列表。

打印行List<CodeModel>按预期打印。


推荐阅读