以前写代码喜欢用Map拼接返回去给前端,这样得到的也是一个标准的JSON,今天先不说Map的优缺点,我们就来说说JSONObject的使用,我用的是阿里的fastjson,先上代码,当我们需要嵌套代码的时候,看需求:

由于sessionData后面是{},所以后面的对象必须是一个JSONObject,如果是sessionData后面是[]就可以使用JSONArray。一般sessionDataExpires,sessionDataKey,sessionDataValue字段都是从缓存或数据库中查出来的,我们查出来的数据都习惯用List<T>去接收,那么问题就来了,List对象怎么转成JSONObject呢?由于我翻了百度好几页都没有我想要的答案,所以才有了这篇博客。

要知道List对象怎么转成JSONObject,我们直接来看源码即可,在idea中把所有JSONObject的方法都.出来:

在所有方法中,我们很容易看到哪些方法是返回了一个JSONObject的,而这个方法正是我们需要的,我们先看到parseObject这个方法,他返回的就是一个JSONObject

找到了parseObject方法,但是问题又来了,我们的参数是List,但是parseObject方法接收的参数是一个String类型(这个Stirng是JSON格式的String,不能任意写)。那我们就继续点(.)方法,再找我们需要的方法:

这里我们可以看到toJSONString方法,传入要给Objec对象,就能得到一个String类型的结果,由于一切对象,不管是List ,Map还是其他对象,都属于Object对象,所以我们就可以使用toJSONString这个方法来满足我们的要求,最后看一下代码:

1         List list = new ArrayList(16);
2 JSONObject result = JSONObject.parseObject(JSONObject.toJSONString(list));

这里我们得到的result就是一个JSONObject格式的数据了,最后在通过一个JSONObject来拼接,就能得到我们的最终效果了,看代码:

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把方法都列出来,并找到自己想要的方法,这就是别人不用看源码就能很快上手一门技术的原因之一,只要看懂对象里面有什么方法,哪些是你需要用到的方法,你就离大神又进一步了。

最新文章

  1. Linux目录结构
  2. 微信小程序需要https后台的创业机会思考
  3. ACM/ICPC 之 数论-斐波拉契●卢卡斯数列(HNNUOJ 11589)
  4. XidianOJ 1112 Too stupid
  5. WinForm 批量设置指定控件中的控件状态
  6. eclipse js卡顿
  7. 在Tomcat上配置CAS 自己的体验
  8. java.util.logging.Logger基础教程
  9. python_利用高阶函数实现剪枝函数
  10. 一句Python,一句R︱数据的合并、分组、排序、翻转
  11. 从零开始搭建口袋妖怪管理系统(2)-借助ngRoute实现详情页面跳转
  12. 【bzoj 4176】 Lucas的数论 莫比乌斯反演(杜教筛)
  13. spring boot拦截器WebMvcConfigurerAdapter,以及高版本的替换方案(转)
  14. (原创)cocos lua 热更新从零开始(一)最简单demo
  15. Vue route部分简单高级用法
  16. Spring Security(八):2.4.3 Project Modules
  17. CodeForces1073E 数位dp+状压dp
  18. yii添加模型基础类
  19. Asterisk——part 1
  20. 基于OpenGL编写一个简易的2D渲染框架-09 重构渲染器-Shader

热门文章

  1. How tomcat works(深入剖析tomcat)servlet容器
  2. MySQL数据库入门学习
  3. Github 美化设置个人主页
  4. volatility内存取证学习
  5. tensorflow GPU的使用
  6. (数据科学学习手札99)掌握pandas中的时序数据分组运算
  7. 用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]
  8. es6交换两个值
  9. Chrome中Console使用技巧
  10. VS调试相关