Java 在某些环境中,JSON中缺少Jackson@XmlRootElement
我正在使用Jackson、RESTEasy、Spring并在JBOSS服务器上运行。Java 在某些环境中,JSON中缺少Jackson@XmlRootElement,java,json,jboss,jaxb,jackson,Java,Json,Jboss,Jaxb,Jackson,我正在使用Jackson、RESTEasy、Spring并在JBOSS服务器上运行。 我有一个带有JAXB注释的标准POJO,如下所示: @XmlRootElement(name="aRoot") public class aRoot{ @XmlElement String aString; @XmlElement String bString; } 我遇到的问题是,在一台服务器上,我接收到以下JSON输出
我有一个带有JAXB注释的标准POJO,如下所示:
@XmlRootElement(name="aRoot")
public class aRoot{
@XmlElement
String aString;
@XmlElement
String bString;
}
我遇到的问题是,在一台服务器上,我接收到以下JSON输出:
{"aRoot":{"aString":"aValue","bString":"bValue"}}
{"aString":"aValue","bString":"bValue"}
但在另一台服务器上,我收到了以下JSON输出:
{"aRoot":{"aString":"aValue","bString":"bValue"}}
{"aString":"aValue","bString":"bValue"}
我对正在发生的事感到困惑。我在两台服务器上都部署了相同的代码,我相信这两台服务器的配置方式是相同的。然而,在这一点上,我想知道是否需要在JBOSS服务器上设置一些配置,以确保根元素得到正确处理,或者是否还有其他事情在进行。有人知道为什么我会在不同的环境中看到这两种截然不同的行为吗
更新:我解决了这个问题。我通过创建一个类来实现:
ContextResolver<ObjectMapper>
并为ContextResolver提供了其他必需的实现细节。我还将spring配置为将其实例化为bean,Jackson自己获取它。可能是一个类路径问题,因为如果我没有弄错的话,spring会通过JavaSPI发现Jackson模块。检查Jackson JAXB模块是否位于两种环境的类路径中。Jackson在两种环境中都位于类路径中。我最终解决了这个问题,创建了一个实现ContextResolver的类,并设置了这个.objectMapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE,true);