JSON类型数据转换为对象,并排除指定的属性.JAVA将购物车数据写入到cookie中


    public void addCart(HttpServletRequest request, HttpServletResponse response, Long skuId, Integer quantity) {
        //获取所有cookies
        Cookie[] cookies = request.getCookies();

        //获取配置文件中的购物车名称
        String cartName = ECPSUtils.readProp("cart_name");

        //json数据转换配置
        JsonConfig jsonConfig = new JsonConfig();
        //指定要转换的类
        jsonConfig.setRootClass(EbCart.class);
        //指定要转换的类中,排除转换的属性
        jsonConfig.setExcludes(new String[]{"stu"});

        //商品信息
        List<EbCart> carts = new ArrayList<EbCart>();

        //查询购物车是否已经存在商品
        if(cookies != null && cookies.length > 0){

            for (Cookie cookie : cookies) {
                //如果用户的请求已经包含了购物名称,说明已经存在了购物车
                if(StringUtils.equals(cartName, cookie.getName())){
                    //购物车信息,并将购物 信息进行编码转换
                    String cartInfo  = cookie.getValue();
                    cartInfo = URLDecoder.decode(cartInfo);

                    //将购物车信息转换为json数组
                    JSONArray jsonArray = JSONArray.fromObject(cartInfo);
                    //通过JSONSerializer 将json数组转换为java集合
                    JSONSerializer jsonSerializer = new JSONSerializer();
                    carts = (List<EbCart>) jsonSerializer.toJava(jsonArray, jsonConfig);

                    //设置标志
                    boolean isExists = false;
                    //循环查询要添加的商品是否已经存在,
                    if(carts.size() > 0){
                        for (EbCart cart : carts) {
                            //如果已经存在,则结束循环,并在已经存在的商品中加上本次购买的数量(注意:这里对比时如果不使用longValue方法,就要使用equals来比较) 
                            if(cart.getSkuId().longValue() == skuId.longValue()){
                                cart.setQuantity(cart.getQuantity()+quantity);
                                isExists = true;
                                break;
                            }
                        }
                    }


                    //如果要购买的商品在购物 车不存在,则将此商品加入到商品列表中
                    if(!isExists){
                        EbCart cart = new EbCart();
                        cart.setSkuId(skuId);
                        cart.setQuantity(quantity);
                        carts.add(cart);
                    }
                }
            }
        }else{
            //如果购物车不存在,则将要购物的商品放入到商品列表中
            EbCart cart = new EbCart();
            cart.setSkuId(skuId);
            cart.setQuantity(quantity);
            carts.add(cart);
        }
        //将JAVA集合转换为json数组
        JSONArray jsonArray = JSONArray.fromObject(carts);
//      jsonArray.add(carts);

        //将java数组转换为字符串,并重新编码
        String result = jsonArray.toString();
        result = URLDecoder.decode(result);

        //创建cookie,将购物车信息放入进去。
        Cookie cookie = new Cookie(cartName, result);
        //设置cookie 的有效期
        cookie.setMaxAge(Integer.MAX_VALUE);
        //设置cookie的作用域
        cookie.setPath("/");

        //将cookie写入到用户的浏览器中
        response.addCookie(cookie);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值