繁体   English   中英

当 dart 中的属性可能有两种类型时,如何解析 json

[英]How to parse json when an attribute might have two types in dart

我正在使用相同的 model 来解析 2 个 json 响应,

在一个响应中,属性user是字符串类型,而在另一个响应中, user是 object。

在这种情况下我该如何解析? 我试过了,

CampaignProductDetails.fromJson(Map<String, dynamic> json) {
  user= json['user'];
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
  data['user'] = this.user;
  return data;
}

但是当user是 object 时,它会显示 _typeError。 我该如何整理? 我需要为这个单一属性创建一个新的 model 吗?

您可以在 Dart 中使用is运算符

CampaignProductDetails.fromJson(Map<String, dynamic> json) {
   user= json['user'] == null ? null : (json['user'] is String ? json['user'] : this.user;
} 

作为替代方案,在 Dart 中,每个 object 都有一个runtimeType实例成员,它在运行时返回 object 的类型(我不建议在生产中使用它,在某处读到它只是)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM