关于JSON.stringify 与 JSON.parse使用小记(笔记向)

来源:互联网 发布:网络违法犯罪举报 编辑:程序博客网 时间:2024/06/08 03:29

前段时间做了一个任务,为了在商城搜索页面给商品的显示顺序做排序,要给商品加上相对应的权值,跳到权重页面,首先需要查出来所有的已经绑定权重值的商品列表,显示出权重值,有效日期以及是否有效等状态,(楼主用的是datatable,其实可以用handlebar来处理,会使页面数据显示更美观,样式更容易更改,但是由于时间紧迫,就没改)跑题了,页面上有一个按钮,点击时可以查找出所有的没有绑定权值的商品列表,每个商品前面有checkbox来提供选择,选中后点确定就会把选中的商品添加到权重列表之中,权重值和有效期为空,需手动添加,添加完毕之后,需要把所有的商品数据传到后台去,然后做更新或是保存处理。由于楼主经验不足,就在传输数据这块儿卡住很长时间。。。最开始想到的是在后台用HttpRequest request来获取页面上的每一个单品值,但是这样需要给每一个单品设定标识来获取对象值,而且麻烦繁琐,pass,然后博主想到可否将前台的列表封装到一个数组里面,然后将数组传到后台,然后将数组循环解析然后插到数据库里面,但是保存时我用的是ajax来保存的,所以需要将封装的数组转化为字符串,然后将字符串传到后台,再将字符串解析为数组对象,在解析数组。下面是代码:

                              1.首先将页面上的所有数据封装到数组里面

var searchWeightFormList=[];
        $('#datatable tr').each(function(){
var value =$(this).find('[name="weightValue"]').val();
var weightTypeId =$(this).find('[name="weightValue"]').attr('weightTypeIds');
var beginDatetime =$(this).find('[name="beginDatetime"]').val();
var endDatetime =$(this).find('[name="endDatetime"]').val();
if(typeof(value) !="undefined"&&typeof(weightTypeId) !="undefined"&&typeof(beginDatetime) !="undefined"&&typeof(endDatetime) !="undefined"){
   searchWeightForm={
    weightValue:value,
    weightTypeId:weightTypeId,
    beginDatetime:beginDatetime,
    endDatetime:endDatetime
    };
   searchWeightFormList.push(searchWeightForm);
   }
});


                              2.ajax传输数据

                              callService('/XXX/XXXXXXX.ajax',{searchFormJson:JSON.stringify(searchWeightFormList)}, {
    callSuccess : function(data) {
    if (data != null) {
    $.dm.jumpTo("/XXX/XXXXXXX.jhtml");
    }else{
    jsAlert(“保存失败”);
    }
    }
    })

                            注:此处使用到了JSON.stringify()的方法,将一个form的数组转化为字符串


                            3.后台获取数据并且解析数组

                            /**
                                 * 保存权重列表
                                 * 
                                 * @return
                                 */
                                @ResponseBody
                                @RequestMapping(value = "/XXXXXX.ajax", method = { RequestMethod.POST })
                                public Boolean toSaveSearchWeightAdSetList(String searchFormJson) {


                                    SearchWeightForm[] searchWeightFormList = JSON.parseObject(searchFormJson, SearchWeightForm[].class);

                                    List<SearchWeightVo> searchWeightVoList = new ArrayList<SearchWeightVo>();
                                    for (SearchWeightForm searchWeightForm : searchWeightFormList) {
                                        SearchWeightVo searchWeightVo = (SearchWeightVo) BeanUtil.copy(searchWeightForm, SearchWeightVo.class);
                                        searchWeightVo.setModifyUser(SystemConstant.SYSTEM_USER);
                                        searchWeightVoList.add(searchWeightVo);
                                    }
                                    Long result = adminSearchWeightModel.toSaveSearchWeightAdSetList(searchWeightVoList);
                                    if (result > 0) {
                                        return true;
                                    }
                                    return false;
                                }

                                注:此处使用了JSON.parseObject()的方法,将一个字符串转换为一个对象。

这个方法也许对于大佬们算是小菜一碟,但是博主完成之后还是稍感欣慰的。所以要更加努力,每学会一点点就在博客上做点记录,积少成多,加油。

0 0
原创粉丝点击