복붙노트

[SPRING] Jackson ObjectMapper는 POJO를 비 직렬화 할 수 없으며 예외를 throw합니다. 유형에 적합한 생성자가 없습니다. [...] : JSON 객체에서 인스턴스화 할 수 없습니다.

SPRING

Jackson ObjectMapper는 POJO를 비 직렬화 할 수 없으며 예외를 throw합니다. 유형에 적합한 생성자가 없습니다. [...] : JSON 객체에서 인스턴스화 할 수 없습니다.

성공적으로 다음 코드를 테스트하려고했습니다.

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\": \"test1@com.com\", \"name\": \"test1\"}";
    ObjectMapper mapper = new ObjectMapper();

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

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

이 문제는 다음과 다릅니다. 잭슨과 JSON deserializing - 왜 JsonMappingException "적절한 생성자가 없다"?

그리고 이것: JsonMappingException : [simple type, class] 유형에 적합한 생성자가 없습니다 : JSON 객체에서 인스턴스화 할 수 없습니다.

그리고 이것: JsonMappingException : [simple type, class] 유형에 적합한 생성자가 없습니다 : JSON 객체에서 인스턴스화 할 수 없습니다.

나는 기본 생성자를 수동으로 오버라이드 했으므로 서브 클래스가 아니다.

이 문제를 어떻게 수정합니까?

해결법

  1. ==============================

    1.정적으로 만드십시오. 잭슨은 내부 클래스에 비 직렬화 할 수 없습니다.

    정적으로 만드십시오. 잭슨은 내부 클래스에 비 직렬화 할 수 없습니다.

  2. ==============================

    2.문제는 아마도 Jackson이 ND2Customer 클래스에 제대로 도달 할 수 없어서 클래스가 비공개이므로 생성자를 호출 할 수 없다는 것입니다. 공개로 설정하고 작동하는지 확인하십시오.

    문제는 아마도 Jackson이 ND2Customer 클래스에 제대로 도달 할 수 없어서 클래스가 비공개이므로 생성자를 호출 할 수 없다는 것입니다. 공개로 설정하고 작동하는지 확인하십시오.

  3. from https://stackoverflow.com/questions/12916774/jackson-objectmapper-cannot-deserialize-pojo-throws-an-exception-no-suitable-c by cc-by-sa and MIT license