我创建了一个类,如这里的示例中所示:https://docs.flutter.dev/development/data-and-backend/json

class NewUser {
String Username;
String Mail;
String Password;
Lang Language;

NewUser(this.Username, this.Mail, this.Password, this.Language);

NewUser.fromJson(Map<String, dynamic> json)
  : Username = json['Username'],
    Mail = json['Mail'],
    Password = json['Password'],
    Language = json['Language'];

Map<String, dynamic> toJson() => {
    'Username': Username,
    'Mail': Mail,
    'Password': Password,
    'Language': Language
};
}

当我try 调用toJson时,它失败了:将对象转换为可编码对象失败:"NewUser"的实例

NewUser user = NewUser('username', 'mail', 'password', Lang.cs);
String json = jsonEncode(user);
print(json);

你知道怎么解决这个问题吗?

编辑:因为"语言"是枚举.如何序列化枚举?

推荐答案

您可以使用Lang.name来编码为JSON,使用Lang.values.byName(...)来解码JSON.看看下面:


class NewUser {
  String Username;
  String Mail;
  String Password;
  Lang Language;

  NewUser(this.Username, this.Mail, this.Password, this.Language);

  NewUser.fromJson(Map<String, dynamic> json)
    : Username = json['Username'],
      Mail = json['Mail'],
      Password = json['Password'],
      Language = Lang.values.byName(json['Language']);

  Map<String, dynamic> toJson() => {
      'Username': Username,
      'Mail': Mail,
      'Password': Password,
      'Language': Language.name,
  };
}

Json相关问答推荐

输入请求中不存在null的条件抖动

从JSON格式提取数据时分隔通用名称

在ConvertFrom-Json之后需要从PowerShell对象中获取数据

如何在我的响应模型中修复此问题:[期望的值类型为';Map<;Dynamic,Dynamic&>;,但获得的值类型为';NULL&39;]

使用Kotlin限制序列化类属性的允许整数值

将部分数据字节解组到自定义 struct 中

用 Jolt 替换 JSON 中的值

如何将具有相同 struct 的多个JSON文件中的对象数组合并成一个数组?

基于JQ中另一个对象的值 Select 对象

使用 jq 从字符串列表开始创建对象

将具有多个级别的 json 读入 DataFrame [python]

ORA-01422: 精确提取返回的行数超过了与 json 对象组合的请求数

SwiftUI:如何使用 0 索引数组键为 JSON 添加类型

JSON 模式验证

如何使用 Serde 使用顶级数组反序列化 JSON?

使用 @ResponseBody 自定义 HttpMessageConverter 来做 Json 事情

json.dumps 打乱了顺序

字符串的 Gson 数组到 JsonArray

Gson 将一组数据对象转换为 json - Android

如何对 jq 中的 map 数组中的值求和?