当前位置: 首页 > 知识库问答 >
问题:

“_TypeError”不是“String”错误映射类型的子类型

司马彬
2023-03-14

我想要一张地图

我的对象

    class Product{
      String id;
      String title;
      double price;
      String image;
      bool sc;
    
      Product({@required this.id, @required this.title, @required this.price,
        @required this.image, @required this.sc});
    
      factory Product.fromJson(Map<String, dynamic> json) {
        return Product(
          id: json['id'] as String,
          title: json['title'] as String,
          price: json['price'] as double,
          image: json['image'] as String,
          sc: json['sc'] as bool,
        );
      }
    }

http代码在这里

    Future<Map<String, List<Product>>> fetchProduct(String url) async{
    dio.Dio d = new dio.Dio();

    Map<String, dynamic> headers = new Map();
    headers['Cookie'] = "JSESSIONID=" + SessionUtils().getSession().toString();
    dio.Options options = new dio.Options(
      headers: headers,
      contentType: 'application/json'
    );

    dio.Response response = await d.get(url, options: options);

    print(response.data);
    if(response.statusCode == HttpStatus.ok){
      return json.decode(response.data); // need help here
    }
  
  } 

我得到了错误I/flutter(20085):另一个异常被抛出:类型'_TypeError'不是类型'String'的子类型

谢谢

共有1个答案

董和风
2023-03-14

DIO API参考

在他们的API参考中,他们提到您必须在选项中设置responseType。默认值是JSON,因此您可以直接返回响应。数据,因为它已被反序列化到映射中。

另一种选择可能是:

responseType = responseType.string;

在dio选项,然后你会得到response.data的字符串形式,你可以手动解码。

我从来没有使用过DIO,但根据API参考,这似乎是个问题,因为错误表明json.decode()期望一个字符串,但得到了一个映射,所以也许response.data是动态的,数据类型根据指定的响应类型。给它一个尝试!

 类似资料:
  • 你好,我正在做一个api调用,在那里我得到了一系列的横幅。我正在犯错误- 横幅。飞奔 横幅。飞奔 api_base_助手。飞奔 得到你的横幅。飞奔

  • 我有一个问题,因为2小时。我有这个错误,我看到了更多的主题,但我不能解决它。 消息:_TypeError(类型列表不是类型映射的子类型)颤动 我的模型: 我的主题屏幕: 我尝试了更多的教程和不同的主题,但我有相同的错误。。。 非常感谢。

  • 因此,我创建了一个应用程序,通过api读取数据,并尝试解析JSON api 这是我的错误截图 我试着把它改成一个列表,但它仍然读取一个错误 这是我的密码大象。飞奔 如何纠正此错误?请帮忙

  • 我试图获得用户信息后,用户输入电子邮件和密码。我使用的api会返回我用户的额外信息,所以我尝试从中获取这些信息。 我试图解析这个json: 这些是我的模型: 这是我发送电子邮件、密码和获取用户数据的部分: 这是给我错误的部分 我打印了响应体,它给出了我想要的字符串,但是jsonDecode返回了一个列表,所以我不能使用它。我怎样才能解决这个问题?提前谢谢。

  • 我目前正在构建一个通过api读取数据的应用程序,我正在尝试从JSON占位符解析JSON api。 我为用户(users_future_model.dart)做了一个模型类: 这是将json读入小部件的main.dart: 这是我试图阅读的JSON信息,尽管它只是其中的一小部分: 我当前遇到的错误是: 如何纠正此错误?

  • 我试图显示用户图像URL在CircleAvatar();它显示一个空错误,即使我已经提供了它。还是我做错了? 首先,我调用Auth方法和设置图像字符串img, 然后在initstate中实例化 然后把它放在抽屉里()