【问题标题】:Unhandled Exception: NoSuchMethodError: Class 'Response<dynamic>' has no instance method '[]'. flutter dart未处理的异常:NoSuchMethodError:类 'Response<dynamic>' 没有实例方法 '[]'。飞镖
【发布时间】:2021-05-29 13:10:51
【问题描述】:

当我尝试解析从 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 处理不太熟悉,谁能帮我实现这个目标??

【问题讨论】:

    标签: json api flutter dart response


    【解决方案1】:

    编辑:您需要解析 JSON 使用 jsonDecode()

    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

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

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 2021-11-24
      • 2021-07-12
      • 1970-01-01
      • 2019-12-13
      • 2022-11-21
      • 2021-10-22
      • 2020-12-19
      • 2021-08-02
      相关资源
      最近更新 更多