【发布时间】:2021-12-20 18:41:54
【问题描述】:
我有一个包含Money 类型字段的飞镖对象,它本身由amount 和currency 组成:
@JsonSerializable()
class Account {
final String id;
final String type;
final String subtype;
final String origin;
final String name;
final String status;
final String currency;
final Money balance; <== value object
...
}
Money 看起来像这样:
class Money {
final int amount;
final String currency;
const Money(this.amount, this.currency);
...
}
上面是映射给sqflite使用的,因此目标JSON必须是一个平面JSON,比如:
{
"id": String,
"type": String,
"subtype": String,
"origin": String,
"name": String,
"status": String,
"currency": String,
"balanceAmount": int; <== value object
"balanceCurrency": String; <== value object
}
我知道我可以在解码之前使用JsonKey.readValue 从整个 JSON 对象中提取复合对象。
但我怎么能反其道而行之呢?从Money 实例中获取两个值并将它们映射到balanceAmount 和balanceCurrency?
我在json_serializable api 文档、GitHub 问题或 StackOverflow 上所做的搜索似乎没有特别回应这一点:如何将一个字段映射到两个(或更多)目标键?
【问题讨论】: