2015-07-09 8 views
7

Ho un JacksonMappingException che sto usando per produrre gli errori per l'utente:Posso personalizzare i messaggi di errore di Jackson?

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; 
} 

Che è ottimo, tranne per alcune classi di errori, alcuni dettagli tecnici fuoriuscire fuori per l'utente, come ad esempio la struttura di classe , ecc, che è del tutto sconveniente:

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

Come posso avere description essere più simile Unrecognized field \"id\" senza tutto il mumbo Jumbo tecnica?

risposta

1

JsonMappingException ha diverse sottoclassi. È possibile eseguire controlli di istanza per la classe dell'eccezione e quindi creare la propria descrizione.