tribbloid
tribbloid

Reputation: 3868

Jackson ObjectMapper cannot deserialize POJO, throws an exception: No suitable constructor found for type [...]: can not instantiate from JSON object

I have tried to test the following code with no success:

class TestClass
{
  private class ND2Customer
  {
    public String name;
    public String description;
    public String email;
    public Boolean multiuser;

    public String dnszone;
    public String uri;
    public String type;

    public ND2Customer()
    {

    }
  }

  @Test
  public void TestJackson() throws JsonParseException, JsonMappingException, IOException
  {
    String json="{\"description\": \"test1u\", \"dnszone\": \"test1.public.sevenltest.example.com.\", \"uri\": \"http://199.127.129.69/customer/test1\", \"multiuser\": true, \"type\": \"2.0.3-3146\", \"email\": \"[email protected]\", \"name\": \"test1\"}";
    ObjectMapper mapper = new ObjectMapper();

    ND2Customer casted=mapper.readValue(json, ND2Customer.class);

    String castedback=mapper.defaultPrettyPrintingWriter().writeValueAsString(casted);
    System.out.println(castedback);
  } 
}

This problem is different from this one: Deserializing JSON with Jackson - Why JsonMappingException "No suitable constructor"?

and this one: JsonMappingException: No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object

and this one: JsonMappingException: No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object

as I have manually override the default constructor, and its not a subclass.

How do I fix this problem?

Upvotes: 23

Views: 20685

Answers (2)

eugen
eugen

Reputation: 5916

Make it static. Jackson can not deserialize to inner classes

Upvotes: 58

Donal Fellows
Donal Fellows

Reputation: 137807

The problem is probably that Jackson can't properly reach your ND2Customer class to invoke its constructor because it is private, as your class otherwise looks just fine. Try making it public and seeing if that works.

Upvotes: 1

Related Questions