gpt4 book ai didi

java - 如何将平面 JSON 反序列化为子类的多个实例?

转载 作者:行者123 更新时间:2023-12-02 12:30:11 26 4
gpt4 key购买 nike

我得到了一个扁平的 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 注释来填充数据类中的 value1 和 value2 字段?

我尝试过自定义 setter ,例如:

@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")字符串货币) {...} ?

编辑:首选使用 Jackson 的方法。

最佳答案

您可以使用GSON库。
这是非常简单的方法。假设您的类(class)是“User”

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>

希望这有帮助

关于java - 如何将平面 JSON 反序列化为子类的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45305199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com