之前写代码喜欢用Map拼接返回去给前端,这样获得的也是一个标准的JSON,今天先不说Map的优缺点,咱们就来讲说JSONObject的使用,我用的是阿里的fastjson,先上代码,当咱们须要嵌套代码的时候,看需求:前端
因为sessionData后面是{},因此后面的对象必须是一个JSONObject,若是是sessionData后面是[]就能够使用JSONArray。通常sessionDataExpires,sessionDataKey,sessionDataValue字段都是从缓存或数据库中查出来的,咱们查出来的数据都习惯用List<T>去接收,那么问题就来了,List对象怎么转成JSONObject呢?因为我翻了百度好几页都没有我想要的答案,因此才有了这篇博客。数据库
要知道List对象怎么转成JSONObject,咱们直接来看源码便可,在idea中把全部JSONObject的方法都.出来:json
在全部方法中,咱们很容易看到哪些方法是返回了一个JSONObject的,而这个方法正是咱们须要的,咱们先看到parseObject这个方法,他返回的就是一个JSONObject缓存
找到了parseObject方法,可是问题又来了,咱们的参数是List,可是parseObject方法接收的参数是一个String类型(这个Stirng是JSON格式的String,不能任意写)。那咱们就继续点(.)方法,再找咱们须要的方法:session
这里咱们能够看到toJSONString方法,传入要给Objec对象,就能获得一个String类型的结果,因为一切对象,无论是List ,Map仍是其余对象,都属于Object对象,因此咱们就能够使用toJSONString这个方法来知足咱们的要求,最后看一下代码:ide
1 List list = new ArrayList(16); 2 JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list));
这里咱们获得的result就是一个JSONObject格式的数据了,最后在经过一个JSONObject来拼接,就能获得咱们的最终效果了,看代码:idea
1 List list = new ArrayList(16); 2 JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list)); 3 JSONObject data = new JSONObject(); 4 data.put("allMenuList",result);
写到这里,我只能说真香!顺带说一句,这里主要是理解怎么经过idea把方法都列出来,并找到本身想要的方法,这就是别人不用看源码就能很快上手一门技术的缘由之一,只要看懂对象里面有什么方法,哪些是你须要用到的方法,你就离大神又进一步了。spa