我正在尝试反序列化以 XML soap 格式接收的消息。以前这一直在工作,但由于源消息的更改,我现在遇到以下问题
Can not deserialize instance of java.lang.String out of START_OBJECT token
我可以看到这是因为消息中的以下内容....
<FieldExample xsi:type="xsd:string"></FieldExample>
我认为问题在于它试图将一个字符串数据类型赋值或“强制转换”到一个空字段上,因此抛出一个错误,指出该字段是一个对象,不能被识别为字符串。
我的问题是如何阻止反序列化程序首先尝试读取这个特定的空字段。这是我在使用Jackson的Java代码中声明的方式
@JacksonXmlProperty(localName = "FieldExample", namespace = Namespace.example)
private String fieldExample;
我尝试了以下方法,但没有成功。。。。
@JsonInclude(JsonInclude.Include.NON_EMPTY)
关于类定义
和
MAPPER.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
关于映射器的创建
不幸的是,问题仍然存在。
问题不包括代码示例,使用问题中找到的代码段发布工作解决方案。
给定java类:
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
public class Foo {
private String bar;
@JacksonXmlProperty(localName = "FieldExample")
private String fieldExample;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
public String getFieldExample() {
return fieldExample;
}
public void setFieldExample(String fieldExample) {
this.fieldExample = fieldExample;
}
}
以下测试通过,没有您提到的任何错误:
import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class FooTest {
@Test
public void testDeserialize()throws Exception {
final String xml = "<root xmlns:xsi=\"http://foo.bar\">" +
"<bar>test</bar>" +
"<FieldExample xsi:type=\"xsd:string\"></FieldExample>" +
"</root>";
final Foo foo = new XmlMapper(new JacksonXmlModule())
.readValue(xml, Foo.class);
org.junit.Assert.assertEquals("test",foo.getBar());
org.junit.Assert.assertEquals("",foo.getFieldExample());
}
}
当然,所有依赖项(子类追加在同一个字符串中)。 从外部API获取数据的代码是; 当我运行代码并试图获取adress“API/3”时,出现以下错误:
下面是put请求的控制器映射: 当我运行以下来自邮递员的请求时: 我得到以下异常 我可能很简单,但我不明白我错过了什么?
我收到下面的错误信息,请有人帮助或建议如何最好地调试这个。 我正在尝试从REst API调用反序列化Products对象。在我添加代码反序列化Price子类之前,代码一直运行良好。如下所示, 我的Price pojo如下所示, 我编写了一个Junit测试来尝试并模拟该错误,
无法将Json反序列化为列表集合。我使用的是Lombok,它保存字段变量: 我该怎么修好它?
无法使用jackson ObjectMapper读取响应。正在脱离START_OBJECT令牌。下面是输入的json和错误消息。PaymentResponse java pojo是通用代码,我没有权限添加任何注释。在添加反序列化配置方面有任何帮助吗?
大家好,我想将int和字符串的数组作为requestBody发送:这是JSON: 这是一个错误: “消息”:“JSON分析错误:无法反序列化START_OBJECT令牌外的实例Ofint[];嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化START_OBJECT令牌外的实例Ofint[]\n位于[Sou