Js解析JFinal多层json集合

public void searchDraftProjets() throws IOException{

String [] tables = getPara("tabname").split(",");

String keyword = getPara("keyword");

String createUser = getSessionAttr("username");

List<List<Record>> alllist = new ArrayList<List<Record>>();

int totalCount=0;

for (int i = 0; i < tables.length; i++) {

List<Record>list = ProjectModel.projectDao.getProDraftlist(tables[i], keyword,createUser);

totalCount+=list.size();

alllist.add(list);

}

String json="{\"totalCount\":\""+totalCount+"\",\"draftlist\":\""+alllist+"\"}";

renderJson(json);

}


前台得到的draftlist json对象没有双引号,前台Json.parse没法解析:

QQ图片20171031090852.png

$.ajax({

                    type: 'POST',

url: 'project/searchDraftProjets',

dataType: 'json',

success: function(data,status){

         alert(data.totalCount);

                       //下面两种方式都不行啊

                        alert(data.draftlist[0]); 得到一个中括号

         var draftlist = JSON.parse(data.draftlist);

},

});

我试过了如果单单renderJSON(allllist)前台接收是没问题的,但是换成我的方式拼接json字符串就不行,为什么传到前台不是标准的json格式了,怎么解决? 如果我的方法不行,怎么同时传多个不同的json对象

评论区

JFinal

2017-10-31 10:16

你的数据最外层是两个数组,然后是 map,而你取的时候只取到第一层数组,应该要这样:
data[0][0].flow_id

zz210891470

2017-10-31 10:20

@JFinal 我知道是这样取,问题是我现在传到前台的json字符串 alert显示没有双引号 没法解析无法取值

JFinal

2017-10-31 10:22

@zz210891470 没双引号那就是你 json 转换工具的事了。 jfinal 集成的 json 实现类默认都是有双引号的,你应该是自己做了调整

zz210891470

2017-10-31 10:25

@JFinal 没用转换工具哦 直接是JFinal的 renderJson 我从数据库查出来的record集合。 好吧 再看看其它方法吧

小白学习

2017-10-31 10:48

@JFinal 怎么加群啊

年轻人

2017-10-31 10:51

@zz210891470 你的这个方法
String json="{\"totalCount\":\""+totalCount+"\",\"draftlist\":\""+alllist+"\"}";
是直接调用了totalCount、alllist 它们的toString() 方法,不是转json

zz210891470

2017-10-31 10:58

@年轻人 没太听懂,那怎么传

年轻人

2017-10-31 11:02

@zz210891470
先把数据转成map,然后renderJson(map),应该就好了,代码如下:
Map map = new HashMap();
map.put("totalCount", totalCount);
map.put("draftlist", alllist);
renderJson(map);

热门反馈

扫码入社