gpt4 book ai didi

java - Jackson反序列化: Custom Object factory

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

如何根据 json 中指定的类类型在 Jackson 中实现从 json 到 Java 对象的转换。

Java 类型示例:

public class Car{
public String make;
public String model;
}

public class Spoon {
public String material;
}

public class Ownership {
public List<Object> items;
public User owner;
}

示例 Json:

{
"items": [
{
"@class": "com.example.Car",
"make": "Mercedes-Benz",
"model": "S500"
},
{
"@class": "com.example.Spoon",
"material": "silver"
}
],
"owner": {
"name": "John"
}
}

由于类的数量未知(用户可以添加任何类),因此无法使用注释@JsonSubTypes。

此外,json 可能包含已知的强类型类,例如示例中使用标准 Jackson 实现序列化的 User 对象。

我能找到的大部分例子,比如http://www.baeldung.com/jackson-inheritance假设子类的数量是已知的,但在我的例子中不是,框架的用户将添加自己的子类。

理想情况下,实现只会解析类型并让 Jackson 完成其余的序列化,而无需重复该代码。

最佳答案

可以使用集合上的注释来解决:

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY,
property = "@class")
public List<Object> items;

关于java - Jackson反序列化: Custom Object factory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296668/

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