JS解析多层集合json

暴走的五花肉
  • 65
public static void main(String[] args) {
    List all = new ArrayList();
    List userlist = new ArrayList();
    userlist.add(new UserModel().set("name", "tom"));
    List userlist1 = new ArrayList();
    userlist1.add(new UserModel().set("name", "tom"));
    all.add(userlist);
    all.add(userlist1);
    renderJson(all);
}

前台js 怎么解析出all 集合中所有子集中的对象?

回复
阅读 6.1k
5 个回答
LanX
  • 478
✓ 已被采纳

renderJson(all) 应该会得到 [[{"name":"tom"}],[{"name":"tom"}]], 然后你在前台JavaScript 中let all = JSON.parse('[[{"name":"tom"}],[{"name":"tom"}]]') 就可以得到相应的结果。

返回的JSON长啥样?

我猜你的 all 长这样:

var all = [
    [{name:'tom'}],
    [{name:'tom'}]
]

解析出all 集合中所有子集中的对象:

function getObj(arr){
    var tmp = []
    all.forEach(function(item,index){
        item.forEach(function(obj,i){
            tmp.push(obj)
        })
    })
    return obj
}

var all = [
    [{name:'tom'}],
    [{name:'tom'}]
]

getObj(all)
//[{name:'tom'},{name:'tom'}]
暴走的五花肉
  • 65
public void searchDraftProjets(){
    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);
}

到前台json字符串key value 没有双引号了,JSON.parse无法解析
图片描述

不管几层集合,后台保证传过来的是jsonStr(使用net.sf.json.JSONArray 方便),前台使用JSON.parse()函数转为js对象然后在取值就行了(不知道怎么取F12慢慢试一试)

宣传栏