title: No Suitable Creator Method Found To Deserialize From JSON String
body: <p>I use Jackson with my Spring application. When Jackson converts my JSON data to an object it gives me an error.</p>
  
  <p>My JSON data is that: </p>
  
  <p><code>{"name":"sdfg","username":"dfgdg","password":"dfgdg","type":"A","protocol":"1","description":"sdfsdfdsf"}</code></p>
  
  <p>My class is that:</p>
  
  <pre><code>public class Device extends Name {
  
      @Column
      private String username;
  
      @Column
      private String password;
  
      @JsonUnwrapped// I added this tag, not sure to use
      @ManyToOne
      private DeviceType type; 
  
      @JsonUnwrapped// I added this tag, not sure to use
      @ManyToOne
      private Protocol protocol;
      ...
      //description and name are fields at Name that Device extends
      //getters and setters
  
  /* I tried that not sure:
   @JsonProperty("protocol")
      public void setProtocol(Protocol protocol) {
          this.protocol = protocol;
      }
  */
  }
  
  public class DeviceType extends Name {
  
      private List&lt;Protocol&gt; supportedProtocols;
  
      public List&lt;Protocol&gt; getSupportedProtocols() {
          return supportedProtocols;
      }
  
  /*
  I tried to add that:
  @JsonProperty("type")
      @Override
      public void setName(String name) {
          super.setName(name);
      }
  */
  }
  
  public class Protocol extends Name {     
   /*
    Nothing at this method. I added that for my purpose:
    JsonProperty("protocol")
    @Override
    public void setName(String name) {
      super.setName(name);
    }
   */
  }
  </code></pre>
  
  <p>Error as follows:</p>
  
  <pre><code>org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.a.a.a.DeviceType, problem: no suitable creator method found to deserialize from JSON String
   at [Source: org.apache.catalina.connector.CoyoteInputStream@2fdaa156; line: 1, column: 47] (through reference chain: com.a.a.a.Device["type"])
      org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:160)
      org.codehaus.jackson.map.deser.StdDeserializationContext.instantiationException(StdDeserializationContext.java:210)
      org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:530)
      org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:356)
      org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:230)
      org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:334)
      org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:495)
      org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:351)
      org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2131)
      org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1455)
      org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readInternal(MappingJacksonHttpMessageConverter.java:135)
      org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:154)
      org.springframework.web.bind.annotation.support.HandlerMethodInvoker.readWithMessageConverters(HandlerMethodInvoker.java:633)
      org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestBody(HandlerMethodInvoker.java:597)
      org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:346)
      org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
      org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
      org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
      org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
      org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
      org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
      org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
      org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
      org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:112)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
      org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
      org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
      org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
  </code></pre>