dart 当结果返回不同的数据类型时如何反序列化JSON

w8rqjzmb  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(111)

我的JSON结果有问题。
当我的JSON响应is not empty返回字典时:

{
    "data": {},
    "errors": [],
    "memId": 0
}

当JSON is empty返回空数组时:

[ ]

当我尝试反序列化JSON响应时,如何处理这种情况?
下面是我的代码:

factory MyJsonObject.fromJson(Map<String, dynamic> json) =>
  MyJsonObject(
    data: json["data"] == null ? null : Data.fromJson(json["data"]),
    errors: json["errors"] == null ? [] : List<dynamic>.from(json["errors"]!.map((x) => x)),
    memId: json["memId"],
);
62lalag4

62lalag41#

将参数设置为dynamic,并添加类型检查:

factory MyJsonObject.fromJson(dynamic json) {
  if (json is Map<String, dynamic>) {
    return MyJsonObject(
      data: json["data"] == null ? null : Data.fromJson(json["data"]),
      errors: json["errors"] == null ? [] : 
      List<dynamic>.from(json["errors"]!.map((x) => x)),
      memId: json["memId"],
    );
  }
  return MyJsonObject.empty();
}

相关问题