颤振 - 在 null 上调用了方法“[]”(解析 json)

Posted

技术标签:

【中文标题】颤振 - 在 null 上调用了方法“[]”(解析 json)【英文标题】:flutter - The method '[]' was called on null (parse json) 【发布时间】:2019-03-31 06:16:46 【问题描述】:

如何使用这样的 Json 结构制作“模型”?

-- 以前,我尝试以另一种形式解析 json 并且它起作用了,当我尝试为上面的 json 制作结构时,如下所示:

class HomeTeam 
  final int id, legacyId, name, countryId;
  final bool nationalTeam;
  final String logoPath;

    HomeTeam(this.id, this.legacyId, this.name, this.countryId, this.nationalTeam, this.logoPath);

    factory HomeTeam.fromJson(Map<String, dynamic> json)
      return HomeTeam(
          id: json['id'],
          legacyId: json['legacy_id'],
          name: json['name'],
          nationalTeam: json['national_team'],
          logoPath: json['logo_path']
        );
    

.

homeTeam: HomeTeam.fromJson(json['localTeam']['data']),

然后结果出现错误..

NoSuchMethodError:在 null 上调用了方法“[]”。 E/颤振 ( 220): 接收者: null E/flutter: 尝试调用:

如何解决这个问题?

【问题讨论】:

您能否给出完整的 json 结构以及如何在其中创建 json 变量。 homeTeam: HomeTeam.fromJson(json['localTeam']['data']), 【参考方案1】:

错误消息NoSuchMethodError: The method '[]' was called on null. 告诉您,您在null 上调用了索引([]) 运算符。

如果您的问题中没有精简的代码示例和 JSON 数据,或者没有指向代码中特定行的堆栈跟踪,则很难判断哪个值为 null。您需要检查堆栈跟踪并查看发生故障的行号。

例如,假设您看到:

Unhandled exception:
NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("data")
#0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5)
#1      main (file:///Users/cbracken/foo.dart:3:23)
...

上面的堆栈跟踪告诉您,对 null 对象的调用位于文件 foo.dart 的第 3 行的 main 中。此外,它告诉您[] 运算符是使用参数'data' 调用的。如果我在我的代码中查看该行并显示var foo = json['localteam']['data'],那么我会推断json['localteam'] 正在返回null。

【讨论】:

是的,对。我忘了在 URL 中添加参数。谢谢 @cbracken 在我的情况下,所有参数都通过了,但仍然一直出现这个错误

以上是关于颤振 - 在 null 上调用了方法“[]”(解析 json)的主要内容,如果未能解决你的问题,请参考以下文章

SharedPreferences 在 null 颤动上调用

颤振和json:NoSuchMethodError:方法'[]'在null上被调用

颤振错误“方法'toLowerCase()'在null上被调用”

NoSuchMethodError:在 null 上调用了方法 'ref'

在 null 上调用了方法“_debugTypesAreRight”

“未处理的异常:NoSuchMethodError:在 null 上调用了 getter 'iterator'。”当我在颤振中使用 google_maps_polyline 插件时抛出