【问题标题】:Why is my class.fromJson method not working?为什么我的 class.fromJson 方法不起作用?
【发布时间】:2021-01-30 04:02:31
【问题描述】:

我有一个无法解决的问题,我正在从 sqflite 数据库中读取数据,而我的 get 方法使用 class.fromJson 方法,但它从不返回任何内容,甚至没有错误。

Future<int> deleteAllDetalleActividadCalificacion() async {
    final db = await database;
    final res = await db.rawDelete('''DELETE FROM DetallesActividadCalificacion ''');
    return res;
  }
  Future<List<DetalleActividadCalificacion>> getDetalleActividadCalificacion(int proyectoId) async {
    final db = await database;
    final res = await db.rawQuery('''SELECT * FROM DetallesActividadCalificacion WHERE proyectoId = $proyectoId ''');
    print('this is  $res');

    List<DetalleActividadCalificacion> list =
    res.isNotEmpty ? res.map((e) => DetalleActividadCalificacion.fromJson(e)).toList() : [];
    print('this is $list');
    return list;

  }

在第一次打印 (res) 中,我得到以下信息:

[{id: 50, proyectoId: 384, asignaturaId: 1, asignaturaColorPrimario: #018FB1, asignaturaNombre: Español, proyectoTitulo: null, secuenciaActividadId: 403, secuenciaActividadTitulo: w, secuenciaActividadDescripcion: w, fechaRegistro: 2020-08-26, rubricaId: null, instrucciones: null, descripcion: null, calificacionId: 4, calificacionNombre: 8}]

然后第二次打印什么也不返回。 这意味着我的课程可能有问题,但我一遍又一遍地检查它,甚至重写了课程,但什么都没有。

这是我的班级模型。

import 'dart:convert';


List<DetalleActividadCalificacion> DetalleActividadCalificacionModelFromJson(String str) =>
    List<DetalleActividadCalificacion>.from(jsonDecode(str).map((x)=> DetalleActividadCalificacion.fromJson(x)));

String DetalleActividadCalificacionModelToJson(List<DetalleActividadCalificacion> data) =>
    json.encode(List<dynamic>.from(data.map((e) => e.toJson())));

class DetalleActividadCalificacion {
  int id;
  int proyectoId;
  int asignaturaId;
  String asignaturaColorPrimario;
  String asignaturaNombre;
  String proyectoTitulo;
  int secuenciaActividadId;
  String secuenciaActividadTitulo;
  String secuenciaActividadDescripcion;
  String fechaRegistro;
  int rubricaId;
  String instrucciones;
  String descripcion;
  int calificacionId;
  int calificacionNombre;
  DetalleActividadCalificacion({
    this.id,
    this.proyectoId,
    this.asignaturaId,
    this.asignaturaColorPrimario,
    this.asignaturaNombre,
    this.proyectoTitulo,
    this.secuenciaActividadId,
    this.secuenciaActividadTitulo,
    this.secuenciaActividadDescripcion,
    this.fechaRegistro,
    this.rubricaId,
    this.instrucciones,
    this.descripcion,
    this.calificacionId,
    this.calificacionNombre,
  });

  

  factory DetalleActividadCalificacion.fromJson(Map<String, dynamic> json) => DetalleActividadCalificacion(
    id: json["id"],
    proyectoId: json["proyectoId"],
    asignaturaId: json["asignaturaId"],
    asignaturaColorPrimario: json["asignaturaColorPrimario"],
    asignaturaNombre: json["asignaturaNombre"],
    proyectoTitulo: json["proyectoTitulo"],
    secuenciaActividadId: json["secuenciaActividadId"],
    secuenciaActividadTitulo: json["secuenciaActividadTitulo"],
    secuenciaActividadDescripcion: json["secuenciaActividadDescripcion"],
    fechaRegistro: json["fechaRegistro"],
    rubricaId: json["rubricaId"],
    instrucciones: json["instrucciones"],
    descripcion: json["descripcion"],
    calificacionId: json["calificacionId"],
    calificacionNombre: json["calificacionNombre"],
  );

  Map<String, dynamic> toJson() => {
    "id": id,
    "proyectoId": proyectoId,
    "asignaturaId": asignaturaId,
    "asignaturaColorPrimario": asignaturaColorPrimario,
    "asignaturaNombre": asignaturaNombre,
    "proyectoTitulo": proyectoTitulo,
    "secuenciaActividadId": secuenciaActividadId,
    "secuenciaActividadTitulo": secuenciaActividadTitulo,
    "secuenciaActividadDescripcion": secuenciaActividadDescripcion,
    "fechaRegistro": fechaRegistro,
    "rubricaId": rubricaId,
    "instrucciones": instrucciones,
    "descripcion": descripcion,
    "calificacionId": calificacionId,
    "calificacionNombre": calificacionNombre,
  };
}

顺便说一句,我的应用周围有很多这样的问题,但没有一个给我这个问题。

【问题讨论】:

  • 打印出来了this is 吗?
  • 我有两个打印件,一个是打印出你看到的 json 的 (res),第二个打印件 (list) 不打印任何东西。
  • 如果使用简单的 for 循环而不是 map 会发生什么?
  • 我是 Flutter 的新手,一般来说编程,你能给我举个例子吗?
  • 我建议您将try-catch 放在res.isNotEmpty ? res.map((e) =&gt; DetalleActividadCalificacion.fromJson(e)).toList() : []; 之间。由于它不打印第二个打印件,因此该行主要有错误。

标签: json flutter dart sqflite


【解决方案1】:

我认为这是声明模型的正确方法。

class DetalleActividadCalificacion {
  int id;
  int proyectoId;
  int asignaturaId;
  String asignaturaColorPrimario;
  String asignaturaNombre;
  Null proyectoTitulo;
  int secuenciaActividadId;
  String secuenciaActividadTitulo;
  String secuenciaActividadDescripcion;
  String fechaRegistro;
  Null rubricaId;
  Null instrucciones;
  Null descripcion;
  int calificacionId;
  int calificacionNombre;

  DetalleActividadCalificacion(
      {this.id,
      this.proyectoId,
      this.asignaturaId,
      this.asignaturaColorPrimario,
      this.asignaturaNombre,
      this.proyectoTitulo,
      this.secuenciaActividadId,
      this.secuenciaActividadTitulo,
      this.secuenciaActividadDescripcion,
      this.fechaRegistro,
      this.rubricaId,
      this.instrucciones,
      this.descripcion,
      this.calificacionId,
      this.calificacionNombre});

  DetalleActividadCalificacion.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    proyectoId = json['proyectoId'];
    asignaturaId = json['asignaturaId'];
    asignaturaColorPrimario = json['asignaturaColorPrimario'];
    asignaturaNombre = json['asignaturaNombre'];
    proyectoTitulo = json['proyectoTitulo'];
    secuenciaActividadId = json['secuenciaActividadId'];
    secuenciaActividadTitulo = json['secuenciaActividadTitulo'];
    secuenciaActividadDescripcion = json['secuenciaActividadDescripcion'];
    fechaRegistro = json['fechaRegistro'];
    rubricaId = json['rubricaId'];
    instrucciones = json['instrucciones'];
    descripcion = json['descripcion'];
    calificacionId = json['calificacionId'];
    calificacionNombre = json['calificacionNombre'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['proyectoId'] = this.proyectoId;
    data['asignaturaId'] = this.asignaturaId;
    data['asignaturaColorPrimario'] = this.asignaturaColorPrimario;
    data['asignaturaNombre'] = this.asignaturaNombre;
    data['proyectoTitulo'] = this.proyectoTitulo;
    data['secuenciaActividadId'] = this.secuenciaActividadId;
    data['secuenciaActividadTitulo'] = this.secuenciaActividadTitulo;
    data['secuenciaActividadDescripcion'] = this.secuenciaActividadDescripcion;
    data['fechaRegistro'] = this.fechaRegistro;
    data['rubricaId'] = this.rubricaId;
    data['instrucciones'] = this.instrucciones;
    data['descripcion'] = this.descripcion;
    data['calificacionId'] = this.calificacionId;
    data['calificacionNombre'] = this.calificacionNombre;
    return data;
  }
}

【讨论】:

  • 谢谢,我已经改了,还是一样的问题。
猜你喜欢
  • 2015-03-14
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多