【发布时间】:2021-05-23 10:02:30
【问题描述】:
假设有两个模型User和City
@JsonSerializable()
class User {
int id;
String name;
City? city;
List<Map<String, City>>? listMapCity;
}
@JsonSerializable()
class City {
int id;
String name;
}
现在假设在 API 调用期间,我们有一个用户模型,但在城市对象模型中,我们只得到 id 而不是 name。像这样的
{
"id": 5,
"name": "Matthew",
"city": {
"id": 12
}
}
但是由于 json_serializable 和 json_annotation 的默认性质。
此 JSON 未映射到 User 模型,在映射期间,它会引发异常。
type Null 不是 String 类型的子类型。 (因为这里 name 键在 city 对象中丢失)
但正如我们已经在 User 对象中声明 City 是可选的,我希望它应该解析带有 city 和 listMapCity 为 null 的 User JSON。
任何帮助或解决方案将不胜感激,谢谢
【问题讨论】:
-
你使用的是什么 Dart 版本?如果您使用的是 Dart 2.12+,那么您应该将 City 对象中的
name字段标记为可为空 -String? name。 -
我正在使用 Dart 2.13,但如果城市对象即将到来,我不希望名称是可选的,那么 id 和 name 都应该出现。
-
目前在iOS中,我正在使用这个库github.com/JohnSundell/Unbox,这个工作就像我解释的那样。
-
如果只有 id 并且 name 不存在,你想做什么?
-
嗯,应该创建一个用户模型,城市为空。
标签: flutter dart dart-null-safety json-serializable