gpt4 book ai didi

java - Jackson Mixin 无法在 Pojo 到 json 中工作

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

我的目标是 xml 到 Pojo 和 Pojo 到 json。我已经使用 jaxb 将 xml 转换为 pojo。现在我正在尝试使用 jackson Jaxb 将 pojo 转换为 json。我得到以下 json,它在 json 中生成 JXBElement 类字段,如下所示。

{
"name" : "{http://xxx.xx.xx.xx.xx.xx.xx}CompositeResponse",
"declaredType" : "xxx.xx.xx.xx.xx.xx.xxCompositeResponseType",
"scope" : "javax.xml.bind.JAXBElement$GlobalScope",
"value" : {
"CompositeIndividualResponse" : [ {
"ResponseMetadata" : {
"ResponseCode" : "HS000000",
"ResponseDescriptionText" : "Success"
}
} ]
},
"nil" : false,
"globalScope" : true,
"typeSubstituted" : false
}

如何删除 name、declaredType、scope、nil、globalScope、typeSubstituted 并获取以下 json

{
"CompositeResponse":
{
"CompositeIndividualResponse" : [ {
"ResponseMetadata" : {
"ResponseCode" : "HS000000",
"ResponseDescriptionText" : "Success"
}
} ]
}
}

我正在寻找这个post但这对我不起作用。
以下代码是我为 jackson mixin 尝试过的。

public class Main {
public static interface JAXBElementMixinT {
@JsonValue
Object getValue();
}
public static void main(String[] args) throws XMLStreamException, IOException {

ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
mapper.setAnnotationIntrospector(introspector );
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.addMixIn(JAXBElement.class, JAXBElementMixinT.class);
String result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(employee);
System.out.println(result);

}
}

我也尝试过以下代码,但没有成功。

public abstract class JAXBElementMixIn {

@JsonIgnore abstract String getScope();
@JsonIgnore abstract boolean isNil();
@JsonIgnore abstract boolean isGlobalScope();
@JsonIgnore abstract boolean isTypeSubstituted();
@JsonIgnore abstract Class getDeclaredType();
}

任何人都可以帮助我哪里错了以及该怎么做,谢谢。

最佳答案

事实上,我本周刚刚遇到这个问题,并通过删除来解决它

AnnotationIntrospector introspector = new  JaxbAnnotationIntrospector(mapper.getTypeFactory());
mapper.setAnnotationIntrospector(introspector );

一 block 。我还没有回顾如何将其添加回来,但这让您拥有的其余代码可以正确地为我工作,并且我不再看到 JAXBElement 包装器。

关于java - Jackson Mixin 无法在 Pojo 到 json 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530267/

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