我有一个像
这样的扁平JSON字符串{"ccy":"EUR",
"value1":500,
"value2":200,
"date":"2017-07-25",
"type":"",
... <many other pairs>}
JSON字符串应使用Jackson在Java中反序列化:
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) {...}
?
编辑:使用杰克逊的方法将是首选。
答案 0 :(得分:1)
您可以使用GSON库 这是非常简单的方法。假设您的班级是“用户”
Gson gson = new Gson();
String jsonInString = "{\"userId\":\"1\",\"userName\":\"Yasir\"}";
User user= gson.fromJson(jsonInString, User.class);
使用此依赖项
添加它<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
希望这有帮助