【发布时间】:2020-01-15 01:33:16
【问题描述】:
我在执行以下代码时收到com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReader 问题
杰克逊版本是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?
【问题讨论】:
-
嗨 Michat ziober。自从 ObjectMapper 读取值以来,提供的链接无法解决我的问题。这里我正在使用 ObjectReader 阅读。
-
但是没有大的区别,你写信改成:
getObjectMapper().readValue(body, clazz);。如果不提供Class或TypeReference,您将无法读取对象。如果您想在不提供课程的情况下阅读JSON,您可以期待Map或List- 仅此而已。 -
好的,谢谢 Michal,但是你能告诉我为什么我得到这个异常吗?这是因为我没有提供任何
Class或TypeReference。?如果是这样,但基于杰克逊库,代码有意义吗? -
请使用jsonlint.com验证您的json
标签: java jackson jackson-databind