假设我在freezed中有一个模型类,
@freezed
abstract class Dto implements _$Dto {
const factory Dto({
String? name,
String? url,
}) = _Dto;
factory Dto.fromJson(Map<String, dynamic> json) =>
_$DtoFromJson(json);
}
现在,JSON响应是
1.
{
"name": "superuser root",
"display_picture_url": "/media_server/user.jpg"
}
{
"name": "superuser root",
"picture_url": "/media_server/user.jpg"
}
没有freezed,我是这样写的,
factory Dto.fromJson(Map<String, dynamic> json) => Dto(
name: json["name"],
value: json.containsKey('display_picture_url')
? json["display_picture_url"] :
json["picture_url"]
),
);
但是在freezed中,我如何才能实现这一点?
我试过使用JsonConverters,但我不知道如何处理这种情况!
1条答案
按热度按时间sqxo8psd1#
您可以使用
@JsonKey
的readValue
参数来执行此操作。引用自
readValue
文档:有时,定制此行为以支持替代名称或支持需要一次访问多个值的逻辑是很方便的。
示例:
Dto/Model设置:
测试:
testJson()输出: