gpt4 book ai didi

java - 全局忽略 jackson 的类(class)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:01 26 4
gpt4 key购买 nike

Jackson 能够使用 DeserializationFeature 全局跳过未知属性,但我找不到任何全局配置来忽略整个类的解析。我有两个具有相同名称但参数不同的方法的类,所以我想将此类设置为全局可忽略(使用 objectMapper 对象),而不仅仅是通过向模型类添加任何注释。可能有人面临这样的问题。

抱歉英语不好。

最佳答案

一种选择是使用@JsonIgnoreType 注释标记您希望忽略的类型。如果你不想用 Jackson 注释弄乱你的模型,你可以使用 mix-ins .

另一种选择是覆盖 the Jackson annotation introspector根据其类型忽略该属性。

这里的例子显示了两者:

public class JacksonIgnoreByType {
public static final String JSON = "{\n" +
" \"bean1\" : {\n" +
" \"field1\" : \"value1\"\n" +
" },\n" +
" \"bean2\" : {\n" +
" \"field2\" : \"value2\"\n" +
" },\n" +
" \"bean3\" : {\n" +
" \"field3\" : \"value3\"\n" +
" }\n" +
"}\n";

public static class Bean1 {
public String field1;

@Override
public String toString() {
return "Bean1{" +
"field1='" + field1 + '\'' +
'}';
}
}

@JsonIgnoreType
public static class Bean2 {
public String field2;
}

public static class Bean3 {
public String field3;
}

public static class Bean4 {
public Bean1 bean1;
public Bean2 bean2;
public Bean3 bean3;

@Override
public String toString() {
return "Bean4{" +
"bean1=" + bean1 +
", bean2=" + bean2 +
", bean3=" + bean3 +
'}';
}
}

public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector(){
@Override
public boolean hasIgnoreMarker(AnnotatedMember m) {
return m.getRawType() == Bean3.class || super.hasIgnoreMarker(m);
}
});

System.out.println(mapper.readValue(JSON, Bean4.class));
}
}

输出:

Bean4{bean1=Bean1{field1='value1'}, bean2=null, bean3=null}

关于java - 全局忽略 jackson 的类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24697808/

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