我在我的應用程序中使用了Jackson的de/serialization。Fallback類<?> for mapper.readValue
我有一種情況,我需要將JSON字符串轉換爲我的3個類中的一個。如果字符串不能轉換爲3類中的任何一類,則認爲它是無法識別的情況。
但是,如果json字符串的架構和mapper.readValue(jsonString,MyClass1.class)
中提供的類不匹配,則會拋出UnrecognizedPropertyException
。
目前我正在使用類似下面的東西,但它似乎很雜亂。
try {
obj = mapper.readValue(jsonString, MyClass1.class);
} catch (UnrecognizedPropertyException e1) {
try {
obj = mapper.readValue(jsonString, MyClass2.class);
} catch (UnrecognizedPropertyException e2) {
try {
obj = mapper.readValue(jsonString, MyClass3.class);
} catch (Exception e) {
//handle unrecognized string
}
} catch (Exception e) {
//handle unrecognized string
}
} catch (Exception e) {
//handle unrecognized string
}
這是它需要怎麼做或者是否有其他的選擇?有什麼辦法可以配置mapper
返回null
在無法識別的屬性的情況下,因爲這將導致創建一個簡單的系列if
塊而不是嵌套try-catch
塊?
謝謝你的回答。但似乎忽略未知屬性的配置只是通過'Class >'創建一個提供的類的空實例,並使用默認值,而不是創建類的null實例。希望這個解釋清楚。 –
我已經更新了我的答案,您可以創建一個通用的方法來做這種事情。 –