java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type ...


1. エラー内容

jacksonで、ObjectMapperを使用して、
以下のようにmapper#readValue()したところ、エラーが発生しました。

  • 実装記述
    ObjectMapper mapper = new ObjectMapper();
    Show show = mapper.readValue(json, Show.class);
  • エラー内容
    java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class xyz.monotalk.social.mixcloud.data.Show]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)
    

2. 原因

引数なしのコンストラクターがない。で、エラーが発生しておりました。

修正前のデータクラスの記述

/**
 * Show
 *
 * @author Kem
 */
@Getter
@Setter
@AllArgsConstructor
@Builder
@ToString
public class Show extends Response {
    private String description;
}

を、以下に変更することで解決しました。

/**
 * Show
 *
 * @author Kem
 */
@Getter
@Setter
@AllArgsConstructor
@Builder
@ToString
public class Show extends Response {

    public Show() {
        super();
    }

    private String description;
}

以上です。

コメント