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

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

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

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

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

/* 根据查询条件动态创建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>

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

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

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

    

//提供了一个过滤作用,如果遇到关联的对象时他会自动过滤掉,不去执行关联关联所关联的对象
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;
}
}
});

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

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

   (3)Jquery 操作dom

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


  

eval解析json字符串的更多相关文章

  1. JS的全局函数eval解析JSON字符串

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...

  2. eval解析JSON字符串的一个小问题

    之前写过一篇 关于 JSON 的介绍文章,里面谈到了 JSON 的解析.我们都知道,高级浏览器可以用 JSON.parse() API 将一个 JSON 字符串解析成 JSON 数据,稍微欠妥点的做法 ...

  3. js中eval详解,用Js的eval解析JSON中的注意点

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...

  4. 解析Json字符串的三种方法

    在很多时候,我们的需要将类似 json 格式的字符串数据转为json, 下面将介绍日常中使用的三种解析json字符串的方法 1.首先,我们先看一下什么是 json 格式字符串数据,很简单,就是 jso ...

  5. jquery : eval() 解析json的注意

    jquery eval解析JSON中的注意点介绍 来在:http://www.jb51.net/article/40842.htm 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: ...

  6. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  7. json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。

    json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...

  8. C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  9. Json转model对象,model转json,解析json字符串

    GitHub链接: https://github.com/mozhenhau/D3Json D3Json 通过swift的反射特性,把json数据转换为model对象,本类最主要是解决了其他一般jso ...

随机推荐

  1. ubuntu16.04搭建hadoop集群环境

    1. 系统环境Oracle VM VirtualBoxUbuntu 16.04Hadoop 2.7.4Java 1.8.0_111 master:192.168.19.128slave1:192.16 ...

  2. redis配置详细解析

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等: # # 1k => 1000 bytes # 1kb = ...

  3. ES6 箭头函数(Arrow Functions)

    ES6 箭头函数(Arrow Functions) ES6 可以使用 "箭头"(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 具有一个参数的简单函 ...

  4. Javac语法糖之TryCatchFinally

    https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.3 Optionally replace a try s ...

  5. SQL Function 自定义函数

    目录 产生背景(已经有了存储过程,为什么还要使用自定义函数) 发展历史 构成 使用方法 适用范围 注意事项 疑问   内容 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区别(存 ...

  6. ls命令显示的total你知道代表着什么吗?

    今天我无意间在用ls命令的时候发现显示的内容里的total,这个total代表着什么,引起了我的疑惑. 接下来开始解开它的神秘面纱. total后面的数字是指当前目录下所有文件所占用的空间总和,它是怎 ...

  7. springcloud-02-eureka

    在dubbo项目中(http://www.cnblogs.com/wenbronk/p/6774539.html), 我们使用了zookeeper作为集群的注册中心, 在springcloud中, 也 ...

  8. httpClient 超时时间设置(转)

    尊重博主原创,特贴博客链接.copy下来只怕以后链接失效或删掉. 转自:http://blog.csdn.net/hi_kevin/article/details/32316171 HttpClien ...

  9. Java : 传值or传引用?

    那看看这句经典名言:O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts it best: "Java m ...

  10. jQuery 1.9/2.0/2.1及其以上 on 无效的解决办法

    jQuery 1.9/2.0/2.1及其以上版本无法使用live函数了,然而jQuery 1.9及其以上版本提供了on函数来代替.本文讲解了jQuery on函数的使用方法,以及在使用jQuery函数 ...