遇到合作伙伴API無法正常工作的情況。 我收到的對象是這樣的JsonMappingException處理並反序列化所有我們可以的
{
"id": 1, // Can deserealize
"type": "HUMAN", // Can deserealize
"age": 18, // Can deserealize
"armor": {}, // JsonMappingException
"weapon": {} // Can deserealize
}
所需的解決辦法是登錄JsonMappingException並將其保存在數據庫,而不是崩潰的對象,但結果把空值而不是不能反序列化對象。
{
"id": 1, // Can deserealize
"type": "HUMAN", // Can deserealize
"age": 18, // Can deserealize
"armor": null, // Replaced to null or default object
"weapon": {} // Can deserealize
}
我已嘗試添加DeserializationProblemHandler-都沒法被解僱和DeserializationFeature - 就像我不需要的功能似乎存在。
我如何專門化傑克遜的行爲,以便我可以將這種行爲應用於任何對象,因此如果任何字段無法映射,我可以處理這個並用null或任何默認對象替換?
你能分享反序列化代碼嗎? –
'ObjectMapper mapper = new ObjectMapper(); Player player = null; try { \t player = mapper.readValue(new File(「bad_json.txt」),Player.class); } catch(IOException e){ \t log.error(「Bad json」,e); }'有些類還有反序列化器,我也拋出了JsonMappingException。 –
你可以將它添加到問題中嗎?另外,你還可以添加'Player'類的結構嗎? –