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);

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章