I have a dart object that includes a field of type Money, which itself is composed of amount and 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 looks something like this:
class Money {
final int amount;
final String currency;
const Money(this.amount, this.currency);
...
}
The above is to be mapped for use by sqflite, therefore the target JSON must be a flat JSON, like:
{
"id": String,
"type": String,
"subtype": String,
"origin": String,
"name": String,
"status": String,
"currency": String,
"balanceAmount": int; <== value object
"balanceCurrency": String; <== value object
}
I understand I can use JsonKey.readValue to extract a composite object from the entire JSON object prior to decoding.
But how can I do the opposite? Grab the two values from the Money instance and map them to balanceAmount and balanceCurrency?
Nothing in the search I did on json_serializable api docs, GitHub issues, or StackOverflow appears to respond to this in particular: how to map one field to two (or more) target keys?