com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.itheima.domain.Cart and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
java代码
Cart cart = getCart(loginUser); cart.addCart(cartItem); // 将购物车对象存入redis缓存 Jedis jedis = JedisPoolUtils.getJedis(); // 转换对象为json String json = new ObjectMapper().writeValueAsString(cart); // 存入redis jedis.set(Constant.CART+loginUser.getUid(),json); jedis.close();上面是获取了cart(实体类)的对象,为其赋值后在转换成json形式字符串存入redis中,但是在后面测试的时候,一直会出现InvalidDefinitionException: No serializer found for class 这个错误.而翻译意思就是告诉我无效的定义,没有找到类的序列化器.但是好奇的是我并没有使用到需要序列化类的地方.不过后来经过对这个转换方法的解读,发现将对象转换为json其实就是将实体类进行了一个序列化操作,而在这个操作中,就需要用到我们的get/set方法. 解决
@Data public class Cart {我这里使用的是lombok 其实也就是相应的为实体类加上get/set方法 然后问题就迎刃而解.