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. 原因

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

  • 参考サイト
    jacksonを使ってjsonをデシリアライズする

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

    /**
     * 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;
    }
    

以上です。

コメント