title: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
body: <p>I am getting the below error message, can someone please help or suggest how best to debug this.</p>
  
  <blockquote>
    <p>Cannot deserialize instance of <code>java.lang.String</code> out of START_OBJECT
    token  at [Source: (PushbackInputStream); line: 1, column: 37610]
    (through reference chain:
    com.model.ProductList["products"]->java.util.ArrayList[23]->com.model.Product["price"]->com.Price["now"])</p>
  </blockquote>
  
  <p>I am trying to deserialise a Products object from a REst API call. The code has been working fine until I added code to deserialise a Price sub-class. This looks as follows,</p>
  
  <pre><code>"price": {
          "was": "",
          "then1": "",
          "then2": "",
          "now": "59.00",
          "uom": "",
          "currency": "GBP"
        },
  </code></pre>
  
  <p>My Price pojo looks as follows,</p>
  
  <pre><code>public class Price {
  
       @JsonProperty("was")
       String was;
       @JsonProperty("then1")
       String then1;
       @JsonProperty("then2")
       String then2;
       @JsonProperty("now")
       String now;
       @JsonProperty("uom")
       String uom;
       @JsonProperty("currency")
       String currency;
  
       public Price() {
           //blank constructor for JSON
       }
  
       @Override
       public String toString() {
           return "Price{" +
                   "was='" + was + '\'' +
                   ", then1='" + then1 + '\'' +
                   ", then2='" + then2 + '\'' +
                   ", now='" + now + '\'' +
                   ", uom='" + uom + '\'' +
                   ", currency='" + currency + '\'' +
                   '}';
       }
  }
  </code></pre>
  
  <p>I have written a Junit test to try and simulate the error but it works in my test,</p>
  
  <pre><code>    @Test
      public void shouldConvertJsonProductListIntoPrice() {
          ObjectMapper objectMapper = new ObjectMapper();
          String content3 = "{\"products\": [{\"productId\": \"3525085\",\"title\": \"hush Tasha Vest Dress\", " +
                  "\"price\": {\"was\": \"\",\"then1\": \"\",\"then2\": \"\",\"now\": \"59.00\",\"uom\": \"\",\"currency\": \"GBP\"}, " +
                  "\"colorSwatches\": [{\"basicColor\": \"Red\",\"skuId\": \"237494589\"},{\"basicColor\": \"Blue\",\"skuId\": \"237494562\"}] " +
                  "}]}";
          JavaType valueType = objectMapper.constructType(ProductList.class);
          ProductList readValue;
          try {
              readValue = objectMapper.readValue(content3, valueType);
              assertEquals("3525085", readValue.getProductList().get(0).productId);
              assertEquals("hush Tasha Vest Dress", readValue.getProductList().get(0).title);
              assertEquals("", readValue.getProductList().get(0).price.then1);
              assertEquals("59.00", readValue.getProductList().get(0).price.now);
              assertEquals("Blue", readValue.getProductList().get(0).colorSwatches[1].basicColor);
              assertEquals("237494562", readValue.getProductList().get(0).colorSwatches[1].skuId);
          } catch (Exception e) {
              e.printStackTrace();
              fail();
          }
      }
  </code></pre>
  
  <p><strong>If I comment out the "now" field then my RestAPI call works perfectly and I dont see the exception.</strong> So it seems that there is a problem with the "now" field and here I notice that its trying to convert "59.00" into a String. Could this be a problem for the Fasterxml converter ? do I need to help it maybe ?</p>
  
  <p>The Product class is as follows (although this is much reduced list of fields that I am receiving off the API call).</p>
  
  <pre><code>public class Product {
  
       @JsonProperty("productId")
       String productId;
  
       @JsonProperty("title")
       String title;
  
       @JsonProperty("colorSwatches")
       ColorSwatch [] colorSwatches;
  
       @JsonProperty("price")
       Price price;
  
       public Product(){
           // blank required for Jackson
       }
  
       public Product(String productId, String title, ColorSwatch[] colorSwatches, Price price){
           this.productId = productId;
           this.title = title;
           this.colorSwatches = colorSwatches;
           this.price = price;
    }
  </code></pre>