gpt4 book ai didi

java - jackson 错误处理

转载 作者:行者123 更新时间:2023-12-03 08:57:04 25 4
gpt4 key购买 nike

jackson 使用的版本:2.3.0

我有以下代码

        try {
ObjectMapper mapper = new ObjectMapper();
MenuItem[] menuItems = mapper.readValue(result, MenuItem.class);
return menuItems;
}
catch (Exception e) {
Log.error("Exception while parsing json", e);
}

POJO
public class MenuItem {
public String dataUrl;
}

JSON格式
 [{
"dataUrl": ""
},
{
"dataUrl": []
}]

这确实是简化的示例,请记住我对json的控制为零。上面的json无法解析,很可能是String反序列化器无法处理该数组,至少这是很合逻辑的。

发生以下情况:com.fasterxml.jackson.databind.JsonMappingException:无法从START_ARRAY token 中反序列化java.lang.String实例

问题是如何实现json中的一项(如果json有效)发生什么问题,它只是跳过一项而解析其他项。现在,任何问题只会导致无法解析任何内容。我知道这些注释会忽略未知的属性,但是可能会发生许多不同的问题,以我为例,它们最终会导致空白页面,而不是缺少5%内容的页面。

最佳答案

您可以尝试编写自己的Deserializer类,该类仅在数据类型为文本时才处理数据,如下所示:

public class MenuItemDeserializer {
@Override
public MenuItem deserialize(JsonParser jsonParser,
DeserializationContext ctxt) throws IOException {
try {
jsonParser.nextToken();
String dataUrl = jsonParser.getText();
[…]

MenuItem menuItem = new MenuItem(dataUrl);
return menuItem;
} catch (JsonParseException jpe) {
[...]
}
}

}

这是自定义尝试,因为很长一段时间以来我一直没有与Jackson合作,我可能已经忘记了一些指导原则,希望对您有所帮助。
BR。

关于java - jackson 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283553/

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