简体   繁体   English

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:未找到序列化程序

[英]com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found

Getting error,得到错误,

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.app.server.data.MyUser and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])
    at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1191) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:404) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:145) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:107) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:25) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1429) ~[jackson-databind-2.10.2.jar:2.10.2]
    at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:921) ~[jackson-databind-2.10.2.jar:2.10.2]

When call below function from a Spring boot controller,当从 Spring boot 控制器调用以下函数时,

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class JdbcUserRepository implements UserRepository {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public List<MyUser> findAll() {

        return jdbcTemplate.query( "select * from users", (rs, rowNum) ->
            new MyUser(
                    rs.getLong("user_id"),
                    rs.getString("user_nid"),
                    rs.getString("user_name"),
                    rs.getString("user_duid")
            )
        );
    }
}

Model:模型:

public class MyUser {

    Long userId;
    String userNid;
    String userName;
    String userDuid;

    public MyUser(Long userId, String userNid, String userName, String userDuid) {
        super();
        this.userId = userId;
        this.userNid = userNid;
        this.userName = userName;
        this.userDuid = userDuid;
    }
}

browsers giving error,浏览器报错,

There was an unexpected error (type=Internal Server Error, status=500).
Type definition error: [simple type, class com.app.server.data.MyUser]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.app.server.data.MyUser and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])

How can I resolve it?我该如何解决?

You need to add getter and setters that Jackson can access the object state.您需要添加杰克逊可以访问对象状态的 getter 和 setter。

public class MyUser {

    Long userId;
    String userNid;
    String userName;
    String userDuid;

    public MyUser(Long userId, String userNid, String userName, String userDuid) {
        super();
        this.userId = userId;
        this.userNid = userNid;
        this.userName = userName;
        this.userDuid = userDuid;
    }

    // public getters and setters
}

Use (install) lombok to create getters and setters for you.使用(安装)lombok 为您创建 getter 和 setter。 Put @Data annotation above your class.将 @Data 注释放在您的班级之上。 @Data class MyUser { int id; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 com.fasterxml.jackson.databind.exc.InvalidDefinitionException - com.fasterxml.jackson.databind.exc.InvalidDefinitionException Quarkus com.fasterxml.jackson.databind.exc.InvalidDefinitionException:未找到 class 的序列化程序 - Quarkus com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例 - com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of Jackson 添加附加字段到 JSON 抛出 com.fasterxml.jackson.databind.exc.InvalidDefinitionException - Jackson adding additional fields to JSON throws com.fasterxml.jackson.databind.exc.InvalidDefinitionException java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException - java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造`org.springframework.web.multipart.MultipartFile`的实例 - com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.web.multipart.MultipartFile` com.fasterxml.jackson.databind.exc.InvalidDefinitionException对于用户实体的某些REST操作 - com.fasterxml.jackson.databind.exc.InvalidDefinitionException for some REST operations on User entity com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造“javax.Z0F635D0E0F3874FFF8B581C132E6C7A7B.bind.bind”的实例 - com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `javax.xml.bind.JAXBElement` com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造`java.time.LocalDate的实例 - com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDate 在 java 日期格式:com.fasterxml.jackson.databind.exc.InvalidDefinition.timeException:无法构造实例的`LocalDatejava. - in java date format: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDate`
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM