gpt4 book ai didi

java - 如何为 Jackson 编写自定义 JSON 反序列化器?

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

我需要将一些 JSON 反序列化为 Java 类。我有以下 JSON:

{
"list": [[{
"type": "text",
"subType": "ss"
},
{
"type": "image",
"subType": "text"
}
]]
}

我有以下 Java 类:

public abstract class BaseClass {
public String type;
public String subType;
}

public class Text extends BaseClass {
...
}

public class Image extends BaseClass {
}

并且我需要以这种方式反序列化,如果type等于image并且subType等于text我需要反序列化为 Text 类,否则我需要反序列化为 Image 类。

我该怎么做?

最佳答案

您不需要自定义解串器。使用以下注释标记您的 BaseClass,并使用 ObjectMapper 反序列化:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", visible = true)
@JsonSubTypes({@JsonSubTypes.Type(value = Text.class, name = "text"), @JsonSubTypes.Type(value = Image.class, name = "image")
})
public abstract class BaseClass {
public String type;
public String subType;
}

JsonTypeInfo 定义使用 type 字段的值作为类型名称。JsonSubTypes 将类型名称与 java 类关联起来

关于java - 如何为 Jackson 编写自定义 JSON 反序列化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949244/

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