org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.emyiw.invsystem.entity.vo.BillQueryResponse` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.emyiw.invsystem.entity.vo.BillQueryResponse` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0') at [Source: (PushbackInputStream); line: 45, column: 18] (through reference chain: com.emyiw.invsystem.entity.vo.Results["Data"]->java.util.ArrayList[5])
时间: 2024-04-26 19:21:01 浏览: 241
这是一个 Spring 框架中的异常,应该是在将 JSON 数据转换成 Java 对象时出现问题。异常信息显示,无法通过String参数的构造函数或工厂方法来从字符串值('0')中反序列化出`com.emyiw.invsystem.entity.vo.BillQueryResponse`对象。同时,异常栈还提到了出错的行和列位置,你需要结合具体的代码和数据,检查数据是否符合对象的定义,以及对象的构造函数或工厂方法是否正确。
相关问题
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of com.emyiw.invsystem.entity.vo.BillQueryResponse (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com.emyiw.invsystem.entity.vo.BillQueryResponse (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0') at [Source: (PushbackInputStream); line: 43, column: 18] (through reference chain: com.emyiw.invsystem.entity.vo.Results["Data"]->java.util.ArrayList[1])解决以上报错信息
这个错误信息表明在使用JSON反序列化时,无法构造一个类型为`com.emyiw.invsystem.entity.vo.BillQueryResponse`的实例,因为该类中没有一个接受String类型参数的构造函数或工厂方法来从值“0”进行反序列化。解决这个问题的方法是在该类中添加一个接受String类型参数的构造函数或工厂方法。
例如,你可以在`com.emyiw.invsystem.entity.vo.BillQueryResponse`类中添加一个如下所示的构造函数:
```java
public BillQueryResponse(String value) {
this.value = value;
}
```
或者你也可以添加一个静态的工厂方法:
```java
public static BillQueryResponse valueOf(String value) {
return new BillQueryResponse(value);
}
```
这样就可以通过JSON反序列化器来正确地反序列化该类型的对象了。
public class BillQueryResponse { @JacksonXmlProperty(localName = "InvtHead") private InvtHead invtHead; @JacksonXmlProperty(localName = "InvtListDetail") private InvtListDetail invtListDetail; @JacksonXmlProperty(localName = "InOutList") private InOutList inOutList; } org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of com.emyiw.invsystem.entity.vo.BillQueryResponse (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com.emyiw.invsystem.entity.vo.BillQueryResponse (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('0') at [Source: (PushbackInputStream); line: 43, column: 18] (through reference chain: com.emyiw.invsystem.entity.vo.Results["Data"]->java.util.ArrayList[1])解决以上报错信息
这个错误信息表明在使用JSON反序列化时,无法构造一个类型为`com.emyiw.invsystem.entity.vo.BillQueryResponse`的实例,因为该类中没有一个接受String类型参数的构造函数或工厂方法来从值“0”进行反序列化。但是,从你提供的代码来看,`BillQueryResponse`类似乎是一个XML序列化的类,并使用了`@JacksonXmlProperty`注解来指定XML元素名称。因此,你需要使用XML反序列化器来反序列化该对象,而不是使用JSON反序列化器。
你可以在`com.fasterxml.jackson.dataformat.xml.XmlMapper`类中使用`readValue`方法来反序列化XML字符串。例如:
```java
XmlMapper xmlMapper = new XmlMapper();
BillQueryResponse response = xmlMapper.readValue(xmlString, BillQueryResponse.class);
```
这样就可以正确地反序列化`BillQueryResponse`对象了。
阅读全文