老师你好,商品添加 productStr转成实体product,mapper.readValue(productStr, Product.class)问题
来源:8-6 商品添加之前端实现下

慕后端9028910
2019-06-04
根据调试信息,可以看到,未知的productCategory,第二个图是前端传的表单信息
然后我就去找 product实体类中的属性,
可以看到是一致的, 但我调试了几次,仍然是相同的问题,麻烦问一下老师,问题出在哪? 感谢!
2回答
-
慕后端9028910
提问者
2019-06-05
老师, 我好像找到了问题的所在,但是我有点想不通。 下面图 很诡异,我特意写了个demo,专门测试这个json转product实体类,
然后我去product实体类中 查看属性,如下图
导致测试失败,字符串中 如果将productCategory 改成category,就成功了,另外,我发现即使我怎么改实体类中的属性,比如 productName ==> productNames, 在测试时,通过从失败结果中 查看 13 个属性,仍然是productName , 很诡异呀, 我改了实体类的属性,测试返回的结果,仍然没有变,这也就导致了,我怎么改变实体类中productCategory 一直会报错的原因! 我现在不明白的是 为什么怎么改变属性,序列化 反序列化之后,属性仍然不会变?
012019-06-06 -
翔仔
2019-06-05
同学好,这个问题比较奇怪,没咋遇到过,感觉jackson没认这个field,同学可以clean下tomcat试试,然后也可以复制粘贴我的实体类,clean tomcat试试
package com.imooc.o2o.entity; import java.util.Date; import java.util.List; /** * 商品实体类 * * @author xiangze * */ public class Product { // 主键ID private Long productId; // 商品名 private String productName; // 商品简介 private String productDesc; // 简略图 private String imgAddr; // 原价 private String normalPrice; // 现价(推广价格) private String promotionPrice; // 权重,越大越排前显示 private Integer priority; // 商品积分 private Integer point; // 创建时间 private Date createTime; // 最近一次的更新时间 private Date lastEditTime; // 0.下架 1.在前端展示系统展示 private Integer enableStatus; // 图片详情图列表,跟商品是多对一的关系 private List<ProductImg> productImgList; // 商品类别,一件商品仅属于一个商品类别 private ProductCategory productCategory; // 店铺实体类,标明商品属于哪个店铺 private Shop shop; public Long getProductId() { return productId; } public void setProductId(Long productId) { this.productId = productId; } public String getProductName() { return productName; } public void setProductName(String productName) { this.productName = productName; } public String getProductDesc() { return productDesc; } public void setProductDesc(String productDesc) { this.productDesc = productDesc; } public String getImgAddr() { return imgAddr; } public void setImgAddr(String imgAddr) { this.imgAddr = imgAddr; } public String getNormalPrice() { return normalPrice; } public void setNormalPrice(String normalPrice) { this.normalPrice = normalPrice; } public String getPromotionPrice() { return promotionPrice; } public void setPromotionPrice(String promotionPrice) { this.promotionPrice = promotionPrice; } public Integer getPriority() { return priority; } public void setPriority(Integer priority) { this.priority = priority; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getLastEditTime() { return lastEditTime; } public void setLastEditTime(Date lastEditTime) { this.lastEditTime = lastEditTime; } public Integer getEnableStatus() { return enableStatus; } public void setEnableStatus(Integer enableStatus) { this.enableStatus = enableStatus; } public Integer getPoint() { return point; } public void setPoint(Integer point) { this.point = point; } public List<ProductImg> getProductImgList() { return productImgList; } public void setProductImgList(List<ProductImg> productImgList) { this.productImgList = productImgList; } public ProductCategory getProductCategory() { return productCategory; } public void setProductCategory(ProductCategory productCategory) { this.productCategory = productCategory; } public Shop getShop() { return shop; } public void setShop(Shop shop) { this.shop = shop; } }
必要的时候,可以先使用链接里的ignore方法试试
https://blog.csdn.net/isea533/article/details/33397735?utm_source=tuicool&utm_medium=referral
然后再调试看看,product里面有没有转有productCategory
赞同学的调试能力
022019-06-05
相似问题