eval解析json字符串

场景:在springMVC,手动拼接的list,转成本json字符串后,传到前台,

解决:需要解析成json对象,获取对象的属性,动态生成table。

首先,以下是后台准备好的list,list中有两条记录,每条记录有五个属性:

1 String json;
2 json = JSONArray.fromObject(list).toString();//什么需要转成json字符串,就将对应的list放进去进行转换
3 map.put("balanceList", json);
4 return map;

然后,前台通过Ajax进行接收:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* 根据查询条件动态创建table */
  function test(){  //清除div中之前的table
    $("#table_div").empty();
    var partVersion = '0';
    var containerIds = '0';
    $.ajax({ //ajax取得相应的值
            type: "POST",
            url: "balance/banlanceList.do",
            data: {'partVersion':partVersion,'containerIds':containerIds},
            success:function(data){
              var obj=eval("("+data.balanceList+")");//将后台传过来的list进行解析
              var j=0;
              for(j=0;j<obj.length;j++){
                var balanceObj = obj[j];
                var table= $("<table />").addClass("table"+j).appendTo($("#table_div"));//list中有多少条记录,循环创建多少个table
                    //每一条记录中有五个属性,创建完table后,继续创建五个行
                    var row1 = $("<tr/>").appendTo(".table"+j);
                    var row2 = $("<tr/>").appendTo(".table"+j);
                    var row3 = $("<tr/>").appendTo(".table"+j);
                    var row4 = $("<tr/>").appendTo(".table"+j);
                    var row5 = $("<tr/>").appendTo(".table"+j);                       //每一行的列是不固定的,通过遍历自动生成列
                        for(var i=0;i<balanceObj.length;i++){
                            var o1=balanceObj[i].week;
                            var o2=balanceObj[i].stock;
                                    var o3=balanceObj[i].demand;
                                if(i==0){
                                    var td=$("<td />").css({ "border-right": "1px solid rgb(217,217,217)"});
                                    row1.append(td);
                                    td.text("编号"+balanceObj[i].containerId);
                                   }else{
                                    var td=$("<td />");
                                    row1.append(td);
                                    var week = o1.substring(4,6) + "w";
                                    td.text(week);
                                   }
                                   if(i==0){
                                    var td=$("<td />").css({ "border-right": "1px solid rgb(217,217,217)"});
                                    row2.append(td);
                                    td.text("计划");
                                   }else{
                                    var td=$("<td />");
                                    row2.append(td);
                                    td.text(0);
                                   }
                                   if(i==0){
                                    var td=$("<td />").css({ "border-right": "1px solid rgb(217,217,217)"});
                                    row3.append(td);
                                    td.text("库存量");
                                   }else{
                                    var td=$("<td />");
                                    row3.append(td);
                                    td.text(o2);
                                   }
                                   if(i==0){
                                    var td=$("<td />").css({ "border-right": "1px solid rgb(217,217,217)"});
                                    row4.append(td);
                                    td.text("需求量");
                                   }else{
                                    var td=$("<td />");
                                    row4.append(td);
                                    td.text(o3);
                                   }
                                   if(i==0){
                                    var td=$("<td />").css({ "border-right": "1px solid rgb(217,217,217)"});
                                    row5.a ppend(td);
                                    td.text("库存-需求");
                                   }else{
                                    var td=$("<td />");
                                    row5.append(td);
                                    td.text(o2-o3);
                                   }
                         
                    }
                     
              }
              tableRenderer();
            }
             
        });
  }
//对table进行渲染,对第一列添加背景色,对选中添加背景色
function tableRenderer(){
    $(".baobiao_tab table tbody tr td:last-child").css('border-right','none');
            $(".baobiao_tab table tbody tr td:first-child").css('background','rgb(238,238,238)');
            $(".baobiao_tab table:last-child tr:last-child td").css('border-bottom','none');
            $(".baobiao_tab table:first-child").css('border-top','none');
 
            $(".baobiao_tab table tbody tr").click(function(){         
                $(".baobiao_tab table tbody tr").css("background","rgb(255,255,255)");
                $(this).css("background","rgb(223,232,246)");
            })
}
 
)页面div用于显示table<div class="baobiao_tab" id="table_div">
</div>
//提供了一个过滤作用,如果遇到关联的对象时他会自动过滤掉,不去执行关联关联所关联的对象JsonConfig config = new JsonConfig();
        config.setJsonPropertyFilter(new PropertyFilter() {
            public boolean apply(Object arg0, String arg1, Object arg2) {
                 if (arg1.equals("article") ||arg1.equals("fans")) {
                        return true;
                    } else {
                        return false;
                    }
            }
        });

 小结:(1)List集合转换成JSON对象

          用net.sf.json包下JSONArray的静态方法:fromObject(list) 这是网上大多是都是直接用此方法快捷转换JSON,但是对于Hibernate级联操作关联的对象,这个方法就会报错,如果将映射文件中的级联配置去掉就行了。

    解决方法就是:JSONArray subMsgs = JSONArray.fromObject(object, config);

    

    (2)eval在JS中将JSON的字符串解析成JSON数据格式

   var dataObj=eval("("+data+")");//转换为json对象

   (3)Jquery 操作dom

   第一次写,表示挺好用的,一些常用的方法,appendTo,remove,empty,attr,css等等,需要多加练习

  

作者:河岸飞流
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   河岸飞流  阅读(761)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

那片笑声让我想起我的那些花儿
在我生命每个角落静静为我开着
我曾以为我会永远守在她身旁
今天我们已经离去在人海茫茫
她们都老了吧 她们在哪里呀
幸运的是我曾陪她们开放




点击右上角即可分享
微信分享提示