長風(fēng)秋雁
2023-07-28 16:56:37
我在執(zhí)行下面的代碼時(shí)遇到com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReader問題杰克遜版本是jackson-databind-2.9.9.jarpublic <T> T parsingData(String body) { try { return getObjectMapper().reader().readValue(body); } catch (IOException ioe) { ioe.printStackTrace(); }}在我進(jìn)入的確切異常下方printStackTrace,可以找到String body異常中公開的內(nèi)容。com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReaderat [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]更新:您能解釋一下為什么我會(huì)收到此異常嗎?這是因?yàn)槲覜]有提供Class還是TypeReference?
1 回答

翻閱古今
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:沒有為 ObjectReader 配置值類型
意味著Jackson
不知道您想要反序列化為哪種類型。由于Java 中的類型擦除,它不起作用。
當(dāng)你綁定一個(gè)類時(shí)它將起作用:
public?static?<T>?T?parsingData(String?body)?throws?IOException?{ ????return?new?ObjectMapper().readerFor(A.class).readValue(body); }
或者使用Class
參數(shù):
public?static?<T>?T?parsingData(String?body,?Class<T>?clazz)?throws?IOException?{ ????return?new?ObjectMapper().readerFor(clazz).readValue(body); }
要理解readValue
方法,我們需要查看文檔:
使用此讀取器的配置綁定從給定 JSON 字符串讀取的內(nèi)容的方法。返回值要么是新構(gòu)造的,要么是使用 withValueToUpdate(Object) 指定的根值。
但在您的代碼中您使用了純閱讀器,沒有任何配置。
如果您不知道類型,只需反序列化JSON
到JsonNode
這可能是最通用的方法:
JsonNode?root?=?new?ObjectMapper().readTree(json);
添加回答
舉報(bào)
0/150
提交
取消