투케이2K

304. (TWOK/ERROR) [Android] 안드로이드 jackson 라이브러리 InvalidDefinitionException: No serializer found 에러 본문

투케이2K 에러관리

304. (TWOK/ERROR) [Android] 안드로이드 jackson 라이브러리 InvalidDefinitionException: No serializer found 에러

투케이2K 2025. 4. 21. 19:53

[환경 설정 및 설명]

프로그램 : AndroidStudio

설 명 : [Android] 안드로이드 jackson 라이브러리 InvalidDefinitionException: No serializer found 에러

 

[설 명]

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [Android] 안드로이드 jackson 라이브러리 InvalidDefinitionException: No serializer found 에러

- 테스트 환경 : 삼성 갤럭시 스마트폰 / 안드로이드 / Android

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------

1. jackson 라이브러리 사용해 Class 매퍼 클래스 정보를 ObjectMapper Serializer 시리얼 라이즈 수행 시 

   클래스 구현 정보가 옳바르지 않아 발생하는 이슈


2. Class 내에 Get , Set 함수가 없이 클래스 생성자 구문만 정의 되어 있어 발생하는 이슈


3. 에러 발생 로그 전문 : 

W/System.err: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.example.javaproject.C_Module.User_Module and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
W/System.err:     at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300)
W/System.err:     at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400)
W/System.err:     at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:46)
W/System.err:     at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:29)
W/System.err:     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
W/System.err:     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
W/System.err:     at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4568)
W/System.err:     at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3821)

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------

1. Class 클래스 구현 정보 수정 : Get , Set 함수 생성 수행


2. Class 구현 예시 : 

package com.example.javaproject.C_Module;

public class User_Module {


    /**
     * // --------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // --------------------------------------------------------------------------------------
     * 1. TODO [설명] : JWE 인코딩에 사용 되는 매퍼 클래스
     * // --------------------------------------------------------------------------------------
     * */





    // ------------------------------------------------------------------------------------------
    // TODO [전역 변수 선언]
    // ------------------------------------------------------------------------------------------
    private String userId; // [사용자 아이디]
    private String userName; // [사용자 이름]





    // ------------------------------------------------------------------------------------------
    // TODO [클래스 생성자 초기화]
    // ------------------------------------------------------------------------------------------
    public User_Module(String userId, String userName) {
        this.userId = userId;
        this.userName = userName;
    }



    // ------------------------------------------------------------------------------------------
    // TODO [Get 정의]
    // ------------------------------------------------------------------------------------------
    public String getUserId() {
        return userId;
    }

    public String getUserName() {
        return userName;
    }



    // ------------------------------------------------------------------------------------------
    // TODO [Set 정의]
    // ------------------------------------------------------------------------------------------
    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }


} // TODO [클래스 종료] 


3. ObjectMapper 사용해 Class 정보 시리얼 라이즈 예시 : 

User_Module userPerson = new User_Module(        
        "TWOK1234",
        "투케이"
);

ObjectMapper objectMapper = new ObjectMapper();
String jsonData = objectMapper.writeValueAsString(userPerson);

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

[Jackson 자바 Object to Json 변환 라이브러리]

https://blog.naver.com/kkh0977/223062394936?trackingCode=blog_bloghome_searchlist


[android 안드로이드 JWE 토큰 생성 후 서버 Bearer 토큰 복호화 이슈 - ObjectMapper 페이로드 생성]

https://blog.naver.com/kkh0977/223840567858?trackingCode=blog_bloghome_searchlist


[JWE AES GCM 인코딩 수행 시 ObjectMapper 사용해 Payload 페이로드 매핑 방법]
https://blog.naver.com/kkh0977/223840564933?trackingCode=blog_bloghome_searchlist


[Jackson] 라이브러리 사용해 json to map 변환 실시

https://blog.naver.com/kkh0977/223074905826?trackingCode=blog_bloghome_searchlist

--------------------------------------------------------------------------
 
반응형
Comments