You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter JSON反序列化报错:Map<String,String>无法赋值给String类型

JSON反序列化错误:Map<String, String>无法转为String的解决方法

错误原因

你定义的jsonString本质是Map<String, String>类型的对象,但jsonDecode()方法要求传入JSON格式的字符串,类型不匹配导致了这个错误。

解决方案1:直接用Map构造User对象

既然已经有了现成的Map,不需要额外调用jsonDecode,直接传给User.fromJson()即可:

import 'dart:convert';

class User {
  User({
    required this.name,
    required this.email,
  });

  String name;
  String email;

  factory User.fromJson(Map<String, dynamic> json) => User(
        name: json["name"],
        email: json["email"],
      );
}

void main() {
  var userMap = {
    "name": "Martin Perumala",
    "email": "martinarxxxxx@gmail.com"
  };

  User user = User.fromJson(userMap);
  print(user.name);
}

解决方案2:转成JSON字符串再解析

如果要模拟从字符串解析的场景(比如网络请求返回的JSON字符串),先把Map转成JSON格式字符串,再用jsonDecode解析:

import 'dart:convert';

class User {
  User({
    required this.name,
    required this.email,
  });

  String name;
  String email;

  factory User.fromJson(Map<String, dynamic> json) => User(
        name: json["name"],
        email: json["email"],
      );
}

void main() {
  var userMap = {
    "name": "Martin Perumala",
    "email": "martinarxxxxx@gmail.com"
  };

  // 将Map转为JSON字符串
  String jsonString = jsonEncode(userMap);
  // 解析字符串得到Map后构造User
  User user = User.fromJson(jsonDecode(jsonString) as Map<String, dynamic>);
  print(user.email);
}

内容的提问来源于stack exchange,提问作者user2955424

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:00:33