java - 我可以自定义 Jackson 错误消息吗?

标签 java jackson

我有一个JacksonMappingException,我用它来为用户产生错误:

public Map<String, List<Map<String, String>>> getErrors(JsonMappingException e) {                                                                                                      

    Map<String, List<Map<String, String>>> errors = new HashMap<>();                                                                                                      

    List<Map<String, String>> badFields = new ArrayList<>();                                                                                                                  

    for (Reference ref: e.getPath()) {                                                                                                                                        
        Map<String, String> badField = new HashMap<>();                                                                                                                       
        badField.put("field", ref.getFieldName());                                                                                                                          
        badField.put("description", e.getOriginalMessage());                                                                                                                
        badFields.add(badField);                                                                                                                                              
    }                                                                                                                                                                         

    errors.put("errors", badFields);  

    return errors;
}

这很好,除了某些类别的错误,某些技术细节会泄露给用户,例如类结构等,这完全不合时宜:

{
  "errors" : [ {
    "field" : "id",
    "description" : "Unrecognized field \"id\" (class motif.web.resource.UserResource$PutUser), not marked as ignorable"
  } ]
}

我怎样才能让 description 更像 Unrecognized field\"id\" 而没有所有技术上的庞然大物?

最佳答案

JsonMappingException 有几个子类。您可以对异常类进行 instanceof 检查,然后构建您自己的描述。

关于java - 我可以自定义 Jackson 错误消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31329650/

相关文章:

java - 无法使用 Jackson 从对象值(无基于委托(delegate)或基于属性的创建者)反序列化

java - 使用对象属性中的别名将映射序列化为对象

java - 从另一个窗口关闭所有子窗口浏览器

java - 改变深度优先搜索的方向

java - 如何从 Image 对象获取 byte[] 数据?

java - Jackson 将 Map 合并到 json 对象中

java - 使用 Jackson 将巨大的 JSON 响应反序列化为 POJO 的最有效方法是什么?

java - 使用 mapstruct : Error:(22, 映射 48) java: 参数类型 "quote"没有名为 "quote_type"的属性

java - GWT 文本框编码和 RPC

java - 如何直接使用jni将字节数组从c复制到java byte[]属性