颤振 - 在 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 插件时抛出