使用Jackson时需捕获JsonProcessingException,2. 使用Gson时应处理JsonSyntaxException和IOException,3. 通用建议包括预校验输入、捕获异常并输出友好信息、避免暴露原始异常、返回默认值以保证程序运行,4. 可封装工具方法提升复用性,核心是识别对应库的异常类型并做好容错。
在Java中处理JSON解析异常,关键在于使用合适的JSON库并正确捕获其抛出的异常。常见的JSON库如Jackson、Gson和Fastjson都有各自的异常类型,需针对性处理。
Jackson是Java中最常用的JSON处理库之一。解析JSON时可能抛出JsonProcessingException,应使用try-catch捕获。
示例代码:
ObjectMapper mapper = new ObjectMapper();
try {
MyObject obj = mapper.readValue(jsonString, MyObject.class);
} catch (JsonProcessingException e) {
System.err.println("JSON解析失败:" + e.get
Message());
// 可记录日志或返回默认值
}
注意检查输入字符串是否为null或空,避免不必要的解析尝试。
Gson在解析错误时会抛出JsonSyntaxException,也可能出现IOException。
正确做法是同时捕获这两个异常:
示例:
Gson gson = new Gson();
try {
MyObject obj = gson.fromJson(jsonString, MyObject.class);
} catch (JsonSyntaxException e) {
System.err.println("JSON格式错误:" + e.getMessage());
} catch (Exception e) {
System.err.println("其他错误:" + e.getMessage());
}
无论使用哪种库,都应遵循以下实践:
可封装一个工具方法统一处理不同情况,提高代码复用性。
基本上就这些,关键是根据所用库识别对应异常类型,并做好容错设计。不复杂但容易忽略细节。