objetos - libreria json para java
Jackson ObjectMapper no puede deserializar POJO, lanza una excepción: no se encontró un constructor adecuado para el tipo[...]: no se puede crear una instancia del objeto JSON (2)
He intentado probar el siguiente código sin éxito:
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);
}
}
Este problema es diferente de este: Deserializar JSON con Jackson - ¿Por qué JsonMappingException "No hay un constructor adecuado"?
como he anulado manualmente el constructor predeterminado, y no es una subclase.
¿Cómo soluciono este problema?
Hazlo estático. Jackson no puede deserializar a clases internas.
Probablemente, el problema es que Jackson no puede alcanzar correctamente su clase ND2Customer
para invocar a su constructor porque es private
, ya que de lo contrario su clase se ve bien. Intenta hacerlo public
y ver si eso funciona.