json - 如何在 Flutter 中转换 json 空数组?

标签 json flutter types casting

编辑:在我再次检查后,因为这是列表中对象中的一个字段,结果在列表中的某处,一个对象确实有 "data": {}

关闭的问题。感谢您的帮助。


我有一个包含空数组内容的 json 字段:

{
  "data": [ ]
}

问题是当我试图将它放入列表时,它会出现异常。

List<dynamic> result = json["data"];

type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>'

当我看到它是“内部链接 HashMap ”时,我想也许我可以使用一个映射。所以我将接收器类型更改为 Map。

Map<String, dynamic> result = json["data"];

type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'

为什么会这样?

我最终可以解决这个问题的唯一方法是创建一个类型推断变量作为中间变量:

var temp = json["data"];
print("temp's runtime type: ${temp.runtimeType}");  // List<dynamic>
List<dynamic> result = temp;  // works

我知道现在可以使用变通方法解决这个问题,但我只想知道为什么上面的尝试是错误的,以及如何直接将 json 字段内容分配给显式类型的变量。

最佳答案

首先,您只需检查您的数据是否为空,然后将值分配给您的 map 。

Map<String, dynamic> result;
if(json["data"]!=null && json["data"].isNotEmpty){
   result = json["data"];
}

关于json - 如何在 Flutter 中转换 json 空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70120240/

相关文章:

javascript - JSON 返回未定义

scala - 方法参数中具有抽象类型的特征

c# - 如何创建列表<编译时未知类型>并通过 System.Reflection.PropertyInfo 复制项目

javascript - 如何将 JavaScript 数组发送到 Rest 服务

java - 将 Json 数组映射到 Java 模型

android - Flutter build apk 有 bug 而 debug 很完美

android - Flutter on Android Studio 从git 克隆问题-Package get' has not been run'

Scala 类型级别减号

.net - WCF HTTP POST 给出 HTTP 状态代码 400 : Bad Request

Flutter/Dart 语法 匿名函数内部