I've got a JacksonMappingException
that I'm using to produce errors for the user:
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;
}
Which is great except for some classes of error, certain technical details leak out to the user, such as class structure, etc, that is totally unseemly:
{
"errors" : [ {
"field" : "id",
"description" : "Unrecognized field \"id\" (class motif.web.resource.UserResource$PutUser), not marked as ignorable"
} ]
}
How can I can have description
be more like Unrecognized field \"id\"
without all the technical mumbo jumbo?
JsonMappingException has several subsclasses. You can do instanceof checks for the class of the exception, and then build your own description.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With