Java “如何修复无法识别的字段”;schemaLocation“;对XML文件进行解组时

Java “如何修复无法识别的字段”;schemaLocation“;对XML文件进行解组时,java,xml,jackson,Java,Xml,Jackson,我在反序列化XML消息时遇到此错误: 无法识别的字段“schemaLocation”(class com.example.RefreshTokenType),未标记为可忽略(4个已知属性:“授权方”、“受众”、“元”、“客户端id”) 背景是我正在从org.eclipse.persistence.moxy切换到FasterXML/Jackson,以便用Jersey处理JSON和XML。在我得到XML消息之前,一切都正常,包括schemaLocation 以下是我的反序列化设置: public

我在反序列化XML消息时遇到此错误:

无法识别的字段“schemaLocation”(class com.example.RefreshTokenType),未标记为可忽略(4个已知属性:“授权方”、“受众”、“元”、“客户端id”)


背景是我正在从org.eclipse.persistence.moxy切换到FasterXML/Jackson,以便用Jersey处理JSON和XML。在我得到XML消息之前,一切都正常,包括schemaLocation

以下是我的反序列化设置:

public static void enableDeserializationSetting(ObjectMapper reader) {
  Set<Class<?>> jaxbClasses = collectJaxbAnnotatedClasses();
  reader.registerModule(new JaxbAnnotationModule());
  reader.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
  reader.registerSubtypes(jaxbClasses);
}
publicstaticvoid启用反序列化设置(ObjectMapper读取器){
设置您可以在
对象映射器中禁用该功能:

mapper.disable(反序列化功能。未知属性失败);
或者,您可以使用设置为
true

@JsonIgnoreProperties(ignoreUnknown=true)
公共类刷新令牌类型{
...
}

嘿,我猜你的意思是说禁用未知属性上的FAIL,对吧?@pirent是的,disable:)Ciao,我想真正的问题是在其他地方。因为当我禁用该属性时,它对我仍然不起作用。但是当我在反序列化上下文上调试handleUnknownProperty时,它会检查该属性是否禁用。所以你的nswer应该会有帮助,但我可能在某个地方误解了它,因此配置不会产生任何效果。但是非常感谢。
public static void enableDeserializationSetting(ObjectMapper reader) {
  Set<Class<?>> jaxbClasses = collectJaxbAnnotatedClasses();
  reader.registerModule(new JaxbAnnotationModule());
  reader.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
  reader.registerSubtypes(jaxbClasses);
}
    <xs:element name="RefreshToken" type="RefreshTokenType"/>
    <xs:complexType name="RefreshTokenType">
        <xs:sequence>
            <xs:element name="meta" type="MetaDataType" minOccurs="0" maxOccurs="unbounded"></xs:element>
            <xs:element name="audience" type="xs:string" minOccurs="0" maxOccurs="unbounded"></xs:element> <!-- mandated by OpenID Connect spec (aud) -->
        </xs:sequence>
        <xs:attribute name="authorized_party" type="xs:string" use="optional" /> 
        <xs:attribute name="client_id" type="xs:string" use="optional" />
    </xs:complexType>