错误:无法反序列化java.lang.String的实例,START_OBECT令牌不足



我使用的是带有WebSphere 9.0的Jackson 2.7.4+EJB 3.0版本。类具有属性String date,如下所示:

类别:

@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
public class filter {
private String date;
...
}

当我调用该方法时,会显示以下错误。

错误

由:org.codehaus.ackson.map.JsonMappingException引起:无法反序列化处START_OBECT令牌中的java.lang.String实例[来源:org.apache.cxf.transport.http.AbstractHTTPDestination$1@b3f4efe6;行:1,列:163]org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:160(在org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserialization Context.java:194(在org.codehaus.jackson.map.deser.StdDeserializer$StringDeserializer.deserialize(StdDeserialize.java:607(在org.codehaus.jackson.map.deser.StdDeserializer$StringDeserializer.deserialize(StdDeserialize.java:576(在org.codehaus.jackson.map.deser.SetableBeanProperty.destrialize(SettableBeanProperty.java:149(在org.codehaus.jackson.map.deser.SetableBeanProperty$MethodProperty.destrializeAndSet(SetableBeanProperty.java:237(在org.codehaus.jackson.map.deser.BeanSerializer.deserializeFromObject(BeanSerializer.java:496(在org.codehaus.jackson.map.deser.BeanSerializer.deserialize(BeanSerializer.java:350(在org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1961(在org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:889(在org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJson Provider.java:410(网址:org.apache.cxf.jaxrs.utils.JAXRSUtils$2.run(JAXRSUtils.java:1408(在java.security.AccessController.doPrivileged(访问控制器.java:738(在org.apache.cxf.jaxrs.utils.JAX-utils.readFromMessageBodyReader(JAXRSUtils.java:1404(在org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1354(在org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAX-utils.java:878(在org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAX-utils.java:837(在org.apache.cxf.jaxrs.entercept.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:265(在org.apache.cxf.jaxrs.entercept.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:95(…还有29个

Maven依赖项:

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>

有人知道吗?

对象的开头应该是这样的{,确保来自Front的json不是以开头

{
"data": "any value"
}

这是一个初学者的问题,所以如果你在不同类型的情况下有相同的错误,解决方案是相同的。

JsonMappingException:无法反序列化的实例

问题: 如果反序列化时使用了错误的类型,则会引发此异常。

解决方案: 检查属性有不同的类型。

在我的问题中,解决方案是将angular日期的类型更改为angular的本机日期,以匹配后端java类型。您可以创建一个main类来测试后端代码,如下所示。

感谢对这篇文章发表评论的开发人员。我可以看到橡皮鸭技术在这里的应用。非常感谢。

public static void main(String[] args) {

ObjectMapper objectMapper = new ObjectMapper();
String json = ""; //Use your string json

try {
Person personDeserialized = objectMapper.readValue(json, Person.class);

} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

最新更新