gpt4 book ai didi

java - mapper.readValue 的后备类

转载 作者:行者123 更新时间:2023-12-02 13:29:56 33 4
gpt4 key购买 nike

我在我的应用程序中使用 Jackson 进行反/序列化。

我遇到了一种情况,需要将 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
}

这是需要这样做还是有其他选择?有没有办法将映射器配置为在无法识别的属性的情况下返回 null ,因为这会导致创建一个简单的系列 if block 嵌套的 try-catch block ?

最佳答案

你可以尝试这个方法来进行反序列化。这将在 UnrecognizedPropertyException 上返回 null:

private <T> T deserialize(ObjectMapper mapper, Class<T> type, String jsonString) {
T t = null;
try {
t = mapper.readValue(jsonString, type);
} catch (UnrecognizedPropertyException e) {
//handle unrecognized string
}catch (IOException e) {
//handle under errors
}
return t;
}

关于java - mapper.readValue 的后备类<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225974/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com