mapper.readValue()将JSON字符串转反序列化为对象失败或异常问题

$('#submit').click(function () {
		var product={};						//声明一个商品json对象,从表单中获取对应属性值
		if(isEdit){
			product.productId=productId;
		}

		product.productName=$('#product-name').val();
		product.productDesc=$('#product-desc').val();
		product.normalPrice=$('#normal-price').val();
		product.promotionPrice=$('#promotion-price').val();
		product.priority=$('#priority').val();

		//获取商品类别
		product.productCategory={
			productCategoryId:$('#product-category').find('option').not(function () {
				return !this.selected;
			}).data('id')
		};

上图为js文件里从表单中取值的部分,用以组成对象的属性,返回到后端。

对于Product对象,它的组成为

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 Date createTime;

    //更新时间
    private Date lastEditTime;

    //商品状态 0—>下架  1->在前端展示系统展示
    private Integer enableStatus;

    //商品详情图片列表
    private List<ProductImg> productImgList;

    //属于哪一个商品类别
    private ProductCategory productCategory;

    //商品隶属于哪一个店铺
    private Shop shop;


}

两图对照我们可以看出,js中normalprice、promotionprice属性书写与实体类中不一致(大小写不同)

        ObjectMapper mapper=new ObjectMapper();
        Product product=null;
        //前端将json变成String传递到后端,后端通过key取出value
        String  productStr= HttpServletRequestUtil.getString(request,"productStr");     
        //尝试获取前端传过来的表单String流并将其转换为Product实体类
        product = mapper.readValue(productStr,Product.class);

所以后端在接收到前端发过来的JSON字符串并用mapper.readValue方法将其转化为实体类时,会抛出异常!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值