flutter-方法'[]'在null上被调用(解析json)

时间:2018-10-26 13:11:39

标签: android json api flutter

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

- 以前,我尝试以另一种形式解析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):接收方:空E / flutter:尝试呼叫:

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

错误消息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)
...

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