未经手的异常:将对象转换为编码对象失败:' Mesure'的实例

发布于 2025-02-12 04:14:01 字数 1573 浏览 1 评论 0原文

您好,当我读取数据时,我有类别的类别,然后将其保存在数据库GetStorage GetX上。它可以很好地工作,但是当我添加此测试时,如果mode = display i'm将在模型上添加更多数据并进行映射。我遇到了这个错误。如果不可用,是否可以跳过“首次亮相”和“鳍”?

未经手的异常:将对象转换为编码对象失败: “ Mesure”的实例 我该如何修复!

class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant = "";
  late String debut;
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'],
        fin = json['fin'];

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

hello i have the class mesure when i read data i use it ass a model then i save it on my database getstorage getX . it works perfectly , but when i add this test if mode = display i 'm going to add more data on my model and do the mapping . i'm getting this error . is it possible to skip "debut" and "fin" if it does not available ?

Unhandled Exception: Converting object to an encodable object failed:
Instance of 'Mesure'
how can i fix it !!

class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant = "";
  late String debut;
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'],
        fin = json['fin'];

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

轻许诺言 2025-02-19 04:14:01

有两件事:

  1. 您必须初始化首次亮相才能将其写入JSON( get_storage < /a>);
  2. 而且,您必须默认首次亮相fin的值在json(get_storage)阅读时;

因此,整个类mesure看起来像这样:


class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant;
  late String debut = "";
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'] ?? '',
        fin = json['fin'] ?? '';

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

另外,构造函数中的代码在tojson中看起来倒置。在构造函数中不应该像这样的mode!=“ display”而不是mode ==“ display”

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode != "display") {
      debut = values[4];
      fin = values[5];
    }
  }

There are 2 things:

  1. You have to initialize debut to make it write to JSON (get_storage);
  2. And, you have to default the values of debut and fin to something when reading from JSON (get_storage);

So, the entire class Mesure would look like this:


class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant;
  late String debut = "";
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'] ?? '',
        fin = json['fin'] ?? '';

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

Also, the code in the constructor looks inverted in toJson. Shouldn't in the constructor be like this mode != "display" instead of mode == "display":

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode != "display") {
      debut = values[4];
      fin = values[5];
    }
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文