我在我的应用程序中使用了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实例。希望这个解释清楚。 –
我已经更新了我的答案,您可以创建一个通用的方法来做这种事情。 –