2013-06-12 32 views
6

türünde uygun bir kurucu bulunamadı. Lütfen birisi bana org.codehaus.jackson.map.JsonMappingException neden alıyorum? Tür hatası için uygun bir kurucu bulunamadı? İşte Neden org.codehaus.jackson.map.JsonMappingException alıyorum:

benim kararım: Bir ErrorHolder Nesnesi oluşturmak olmalıdır ama hata alıyorum bu yüzden hatayı sınamak çalışıyorum

try 
     { 
      String jsonreturn = restTemplate.getForObject("http://" + mRESTServer.getHost() + ":8080/springmvc-rest-secured-test/json/{name}", String.class, vars); 
      LOGGER.debug("return object: " + jsonreturn.toString()); 
     } catch (HttpClientErrorException e) 
     { 
      /** 
      * 
      * If we get a HTTP Exception display the error message 
      */ 

      LOGGER.error("error: " + e.getResponseBodyAsString()); 

      ObjectMapper mapper = new ObjectMapper(); 
      ErrorHolder eh = mapper.readValue(e.getResponseBodyAsString(), ErrorHolder.class); 

      LOGGER.error("error: " + eh.errorMessage); 

     } 

;

public class ErrorHolder 
{ 


    public String errorMessage; 

    public ErrorHolder(String errorMessage) 
    { 
     this.errorMessage = errorMessage; 
    } 

    public String getErrorMessage() 
    { 
     return errorMessage; 
    } 

    public void setErrorMessage(String errorMessage) 
    { 
     this.errorMessage = errorMessage; 
    } 

    @Override 
    public String toString() 
    { 
     return "ErrorHolder{" + 
       "errorMessage='" + errorMessage + '\'' + 
       '}'; 
    } 
} 

aşağıdaki hatayı alıyorum neden bilmiyorum: Burada

benim ErrorHolder sınıftır sana bir hiçbir parametre yapıcısı eklemeniz gerekir inanıyoruz

2013-06-12 14:36:32,138 [main] ERROR Main - error: {"errorMessage":"Uh oh"} 
Exception in thread "main" org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ErrorHolder]: can not instantiate from JSON object (need to add/enable type information?) 
at [Source: [email protected]; line: 1, column: 2] 

cevap

13

İki seçenek eklemek için gerekli, ya sen işi yapar varsayılan bir no-argüman yapıcı sağlarlar. Ancak, kullanım örneği için güzel bir çözüm IMHO @JsonCreator ve @JsonProperty tarafından sağlanır:

public class ErrorHolder 
{ 
    public String errorMessage; 

    @JsonCreator 
    public ErrorHolder(@JsonProperty("errorMessage") String errorMessage) 
    { 
     this.errorMessage = errorMessage; 
    } 

    // getters and setters 
} 
+0

Sorun çözüldü, teşekkürler! –

3

senin Bu gibi bir ErrorHolder sınıfı:

public ErrorHolder(){ 
    this(null); 
} 
0

Ben bir kukla yapıcısı

public ErrorHolder(){ 
} 
İlgili konular