Unhandled Exception: NoSuchMethodError: Class 'Response<dynamic>' has no instance method '[]'. flutter dart
Unhandled Exception: NoSuchMethodError: Class 'Response<dynamic>' has no instance method '[]'. flutter dart
当我尝试解析从 restful API 收到的 JSON 响应时,我得到一个错误,因为未处理的异常:NoSuchMethodError:Class 'Response' 没有实例方法 '[].
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' 没有实例方法 '[]
我如何从响应中解析每个单独的值,如名称、密码、phoneno、结果、上传、user_type?
我是 flutter dart 的新手,不太熟悉 REST API 处理,谁能帮我实现这个目标??
编辑:您需要解析 JSON 使用 jsonDecode()
import 'dart:convert';
...
var data = jsonDecode(val);
print(data["result"]);
...
或
您可能没有正确创建对象。
检查此类声明:
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: new 关键字现在在 Dart 中是可选的。
Original Answer link
希望这就是您正在寻找的解决方案。
当我尝试解析从 restful API 收到的 JSON 响应时,我得到一个错误,因为未处理的异常:NoSuchMethodError:Class 'Response' 没有实例方法 '[].
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' 没有实例方法 '[] 我如何从响应中解析每个单独的值,如名称、密码、phoneno、结果、上传、user_type? 我是 flutter dart 的新手,不太熟悉 REST API 处理,谁能帮我实现这个目标??
编辑:您需要解析 JSON 使用 jsonDecode()
import 'dart:convert';
...
var data = jsonDecode(val);
print(data["result"]);
...
或
您可能没有正确创建对象。
检查此类声明:
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: new 关键字现在在 Dart 中是可选的。
Original Answer link
希望这就是您正在寻找的解决方案。