未处理的异常:NoSuchMethodError:“Response<dynamic>”类没有实例方法“[]”。飞镖

时间:2021-02-27 10:39:55

标签: json api flutter dart response

当我尝试解析从 restful API 收到的 JSON 响应时,我收到一个错误为未处理异常:NoSuchMethodError: Class 'Response' has no instance method '[]。

AuthService().addStaff(new_name, phno, uid, pasword).then((val) {
            print(val)
            print(val["result"]);

            //   if (val['result'] == "successfull") {}

addStaff 调用 API 并获得 JSON 响应,当我打印 val 值时,我得到 JSON 响应,如下`

{"Name":"jj","password":"38b","phoneno":"77","result":"successfull","uploadid":"b","user_type":"staff"}

但是当我尝试解析每个单独的元素时说 val['result'],我收到一个异常错误,说 Class 'Response' has no instance method '[] 如何从响应中解析每个单独的值,如名称、密码、电话号码、结果、上传、用户类型? 我是 flutter dart 的新手,对 REST API 处理不太熟悉,有人能帮我实现这个吗??

1 个答案:

答案 0 :(得分:1)

编辑:您需要使用 jsonDecode()

解析 JSON
import 'dart:convert';
...
    
var data = jsonDecode(val);
print(data["result"]);

...

jsonDecode() Documentation

您可能没有正确创建对象。

检查这种类型的声明:

Foo obj; // wronge way of creating object
obj.method();

然后改成这个

Foo obj = Foo(); // Corret way of creating object
obj.method();

Foo obj = new Foo(); // Corret way of creating object
obj.method();

PS:新关键字现在在 Dart 中是可选的。

Original Answer link

我希望,这是您正在寻找的解决方案。