title: Jersey: No suitable constructor found for type [simple type, class Thing]: can not instantiate from JSON object
body: <p>I have a resource with a method like:</p>
  
  <pre><code>@PUT
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces(MediaType.APPLICATION_JSON)
  @Path("/add")
  public Response putThing(Thing thing) {
      try {
          //Do something with Thing object
          return Response.status(HttpStatus.SC_OK).build();
      } catch (Exception e) {
          log.error("Request failed", e);
          return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build();
      }
  }
  </code></pre>
  
  <p>Thing:</p>
  
  <pre><code>public class Thing {
      private final String symbol;
      private final String name;
  
      public Stock(String symbol, String name) {
          this.symbol = symbol;
          this.name = name;
      }
  
      public String getSymbol() {
          return this.symbol;
      }
  
      public String getName() {
          return this.name;
      }
  }
  </code></pre>
  
  <p>When I make a PUT request like: </p>
  
  <pre><code>PUT /rest/add HTTP/1.1
  Host: localhost:8135
  Content-Type: application/json
  Cache-Control: no-cache
  
  {"symbol":"some symbol","name":"some name"}
  </code></pre>
  
  <p>I get the following response:</p>
  
  <blockquote>
    <p>No suitable constructor found for type [simple type, class Thing]: can
    not instantiate from JSON object (missing default constructor or
    creator, or perhaps need to add/enable type information?)</p>
  </blockquote>
  
  <p>Why is Jersey/Jackson not deserializing my JSON object into my POJO?</p>