title: JsonProperty will serialize but not deserialize
body: <p>In short, I am attempting to write an integration test with rest-assured for a rest service I wrote. My issue is that when the server attempts to deserialize the JSON I get the error with field "meta-data" not marked as ignorable. I must process this field, which also means (to the best of my knowledge) I cannot mark it as ignorable. Yes, I have "turned it off and on again". Turned off apache, manually deleted my war and exploded files, redeployed, examined the contents to see updates, turned server back on.</p>
  
  <p>DISCLAIMERS: If I may not upgrade versions, but I could possibly downgrade. For example, I could use Jackson 1.0 instead of Jackson 2.0. I have also simplified my problem for sake of brevity. I can't change the JSON structure in any way. I've seen a similar Thread related to Spring, but I'm not using Spring.</p>
  
  <p>This is just a fragment of the whole JSON object. If I can get meta-data and its two attributes working, I can apply what I learned to the rest of the problem. Thanks!</p>
  
  <p>My JSON</p>
  
  <pre><code>{
    "meta-data" : {
      "submission-time" : "06.12.2016",
      "workflow-reference" : "TEST-WORKFLOW"
    }
  }
  </code></pre>
  
  <p>My JSON POJO</p>
  
  <pre><code>package com.company.group.project.module.shared.json;
  import com.fasterxml.jackson.annotation.JsonFormat;
  import com.fasterxml.jackson.annotation.JsonFormat.Feature;
  import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  import java.util.List;
  
  @JsonIgnoreProperties(ignoreUnknown = true)
  public class JsonMandateRequest {
  
      @JsonProperty("meta-data")
      private MetaData metadata;
  
      public MetaData getMetadata() {
          if (null == metadata) {
              metadata = new MetaData();
          }
          return metadata;
      }
  
      public void setMetadata(final MetaData metadata) {
          this.metadata = metadata;
      }
  
      @JsonSerialize
      public static class MetaData {
  
          @JsonProperty("submission-time")
          private String timestamp;
  
          @JsonProperty("workflow-reference")
          private String workflow;
  
          public String getTimestamp() {
              return timestamp;
          }
  
          public void setTimestamp(final String timestamp) {
              this.timestamp = timestamp;
          }
  
          public String getWorkflow() {
              return workflow;
          }
  
          public void setWorkflow(final String workflow) {
              this.workflow = workflow;
          }
  
      }
  }
  </code></pre>
  
  <p>My Rest Service declaration (I know the path works. That is not what is broken.)</p>
  
  <pre><code>@POST
  @Consumes(MediaType.APPLICATION_JSON)
  @Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})
  public Response uploadFile(final JsonMandateRequest reminders) {
      return buildResponse(reminders, PROCESSOR_UPLOAD_MANDATE);
  }
  </code></pre>
  
  <p>Here is the code that produces my JSON string. It works, but I'm including it in case it benefits the reader in some way.</p>
  
  <pre><code>public static String writeObject(final Object obj) throws IOException
  {
      ObjectMapper mapper = new ObjectMapper();
      mapper = mapper.disable(
              DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
      return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
  }
  </code></pre>
  
  <p>My Integration Test code snippet</p>
  
  <pre><code>    Response r = given()
              .contentType(ContentType.JSON)
              .body(jsonString)
              .when().post(url);
      System.out.println("Response from " + url + "(" + r.getStatusCode() + ")");
      System.out.println(r.asString());
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>Response from http://localhost:8080/application/rest/path(400)
  Unrecognized field "meta-data" (Class com.company.group.project.module.shared.json.JsonMandateRequest), not marked as ignorable
   at [Source: org.apache.catalina.connector.CoyoteInputStream@b60721a; line: 2, column: 18] (through reference chain: com.company.group.project.module.shared.json.JsonMandateRequest["meta-data"])
  Completed com.company.group.project.module.services.rest.InstructionServiceIT#testLifecycle(InstructionServiceIT.java:95)
  </code></pre>
  
  <p>My servlet container is tomcat 7.0.73
  Here are snippets from my pom.xml which show the other versions of software I'm using.</p>
  
  <pre><code>&lt;dependency&gt;
      &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
      &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
      &lt;version&gt;3.0.1&lt;/version&gt;
      &lt;scope&gt;provided&lt;/scope&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
      &lt;groupId&gt;com.sun.jersey&lt;/groupId&gt;
      &lt;artifactId&gt;jersey-json&lt;/artifactId&gt;
      &lt;version&gt;1.9.1&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
      &lt;groupId&gt;com.sun.jersey&lt;/groupId&gt;
      &lt;artifactId&gt;jersey-server&lt;/artifactId&gt;
      &lt;version&gt;1.9.1&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
      &lt;groupId&gt;com.fasterxml.jackson.jaxrs&lt;/groupId&gt;
      &lt;artifactId&gt;jackson-jaxrs-json-provider&lt;/artifactId&gt;
      &lt;version&gt;2.8.3&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
      &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt;
      &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt;
      &lt;version&gt;2.8.3&lt;/version&gt;
  &lt;/dependency&gt;
  </code></pre>