【发布时间】:2017-07-25 13:43:48
【问题描述】:
我有一个扁平的 JSON 字符串,例如
{"ccy":"EUR",
"value1":500,
"value2":200,
"date":"2017-07-25",
"type":"",
... <many other pairs>}
JSON 字符串应在 Java 中使用 Jackson 进行反序列化:
public class Data
{
@JsonProperty("ccy")
private String currency;
private Amount value1;
private Amount value2;
@JsonProperty("date")
private String date;
@JsonProperty("type")
private String type;
... <many other members>
}
与
public class Amount
{
private double value;
private String currency;
public Amount(double value, String currency)
{
this.value = value;
this.currency = currency;
}
}
Jackson 注释在我的 Data 类中填充 value1 和 value2 字段的正确用法是什么?
我尝试了自定义设置器,例如:
@JsonSetter("value1")
private void setValue1(double value1)
{
this.value1 = new Amount(value1, this.currency);
}
@JsonSetter("value2")
private void setValue2(double value2)
{
this.value2 = new Amount(value2, this.currency);
}
但这只有在 this.currency 首先被反序列化时才有效(我不能依赖)。
是否有不使用自定义构造函数作为Data(@JsonProperty("value1") double value1, (@JsonProperty("value2") double value2, (@JsonProperty("ccy") String currency) {...} 的简洁解决方案?
edit:使用 Jackson 的方法将是首选。
【问题讨论】:
标签: java json annotations jackson