- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在执行以下代码时收到com.fasterxml.jackson.databind.exc.InvalidDefinitionException:没有为ObjectReader配置值类型
问题
jackson 版本是jackson-databind-2.9.9.jar
public <T> T parsingData(String body) {
try {
return getObjectMapper().reader().readValue(body);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
在确切的异常下面,我进入了printStackTrace
,并且可以找到异常中公开的String body
。
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReader
at [Source: (String)"{
"timestamp": "2019-06-04T09:36:50.086+02:00",
"path": "/api/check/85358/checking/246syb-f3f2-4756-91da-dae3e8ce774b/test/22462da-c4e2-45ca-bd27-246/rows/8bc3965a-ae22-4d7f-b770-262sgs24/port",
"status": 400,
"error": "Internal Server Error",
"message": "[owner.firstName2:size:1:30, owner.lastName2:size:1:30]",
"errorCode": 200000
}
"; line: 1, column: 1]
更新:您能否解释一下为什么我会收到此异常?这是因为我没有提供 Class
或 TypeReference
吗?
最佳答案
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReader
意味着,Jackson
不知道您想要反序列化为哪种类型。它不起作用,因为 Type Erasure in Java .
当你绑定(bind)一个类时它就会起作用:
public static <T> T parsingData(String body) throws IOException {
return new ObjectMapper().readerFor(A.class).readValue(body);
}
或者使用Class
参数:
public static <T> T parsingData(String body, Class<T> clazz) throws IOException {
return new ObjectMapper().readerFor(clazz).readValue(body);
}
查看有关 readValue
方法的类似问题及其解决方法:How do I parametrize response parsing in Java?
要理解 readValue
方法,我们需要看一下 documentation :
Method that binds content read from given JSON string, using configuration of this reader. Value return is either newly constructed, or root value that was specified with withValueToUpdate(Object).
但是在您的代码中您使用了纯阅读器,没有任何配置。
如果您不知道类型,只需将 JSON
反序列化为 JsonNode
这可能是最通用的方法:
JsonNode root = new ObjectMapper().readTree(json);
关于java - com.fasterxml.jackson.databind.exc.InvalidDefinitionException : No value type configured for ObjectReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57919135/
在 spring boot 2.2.2、java 11 中,通过 Ibm mq 接收对象。 接收到的对象具有 LocalDate 数据类型。 项目在 maven 中有 spring-boot-star
我有几个 Kotlin 数据类实现了这个 TypeAlias 接口(interface): import com.fasterxml.jackson.annotation.JsonValue; pub
我正在尝试使用 spring-boot 和 webclient 调用 Web API。 web api 是 graph ql 的。所以我使用 JsonObject 传递参数,如下所示。 JSONObj
我正在尝试使用 Jackson 的 ObjectMapper 将以下 Player 对象编写为字符串。 package models.Game; import models.Game.Enums.Sn
在我在Spring Boot中构建的REST端点中,我试图将vehicleDTO传递给 Controller 。但是在到达我的 Controller 之前,有一个错误。 InvalidDefini
我正在使用 Jackson 将以下 json 映射到 Map : { "keyA": "java.lang.Double", "keyB": "[Ljava.lang.Doub
我从 API 获得了一个 Json 字符串,并希望将其解析为 Kotlin 对象。 我的杰森: { "Title": "The Secret Life of Walter Mitty", "Y
出现错误, com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class c
尝试将 @JsonCreator 与 @JsonProperty(value = "version", access = JsonProperty.Access.READ_ONLY) 一起使用时遇到
我已经更新了我的依赖,就像你在评论中所说的那样,我现在有了这个: org.springframework.context.ApplicationContextException: Unable to
我有一些实体:用户、角色、权限。对于所有三个实体,我有三个操作,然后将它们公开为 REST api。 findOne()、findAll() 和 create()。问题是: 角色:所有三个操作都有效。
我在执行以下代码时收到com.fasterxml.jackson.databind.exc.InvalidDefinitionException:没有为ObjectReader配置值类型问题 jack
存储在 Elastic 中的员工的生日似乎存储为不正确的数据类型。我有 Elasticseach 客户端的设置代码,带有对象映射器和注册的 JavaTime 模块。我正在尝试从 Elasticsear
在我的 Java 8 代码中,我尝试将字符串日期格式化为 LocalDate 格式。我正在使用 LocalDateDeserializer.class。我收到错误 com.fasterxml.jack
我有一个带有以下假客户的项目 @FeignClient(name = "name", url = "${tokenService}") public interface TokenService {
我目前正在尝试将 JSON 请求直接映射到 XML 定义。我的想法是,我有一个使用 SOAP 服务并将其公开为 RESTful 服务的 Spring Boot 应用程序; 下面是 SOAP 绑定(bi
我正在尝试从 spring boot Controller 访问上传的文件,但出现错误 com.fasterxml.jackson.databind.exc.InvalidDefinitionExce
我已经通过链接:JSON parse error: Can not construct instance of java.time.LocalDate: no String-argument cons
我是一名优秀的程序员,十分优秀!