java-生成任意格式的json数据
最近研究java的东西。之前靠着自己的摸索,实现了把java对象转成json格式的数据的功能,返回给前端。当时使用的是 JSONObject.fromObject(object) 方法把java对象换成json格式。也就是先有一个java实体类,例如叫User。然后从数据库查出列表数据,也就是一个List,里面的每一条数据都是一个User的实体对象。而如果前端需求变化,需要在当前这个接口中多返回一个字段时,就需要修改这个User实体类,新增字段。这样一来,所有用到这个User实体类的接口的地方,接口返回的json数据里都会有新增的这个字段。后来发现可以用一下方法根据需要动态拼接需要的字段。
需要购买阿里云产品和服务的,点击此链接领取优惠券红包,优惠购买哦,领取后一个月内有效: https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=fp9ccf07
1、demo
package com.lin.domain; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class Test { public static void main(String[] args) throws Exception {
JSONObject createJSONObject = createJSONObject();
System.out.println(createJSONObject);
} // 创建JSONObject对象
private static JSONObject createJSONObject() {
JSONObject result = new JSONObject();
result.put("success", true);
result.put("totalCount", "30"); JSONObject user1 = new JSONObject();
user1.put("id", "12");
user1.put("name", "张三");
user1.put("createTime", "2017-11-16 12:12:12"); JSONObject user2 = new JSONObject();
user2.put("id", "13");
user2.put("name", "李四");
user2.put("createTime", "2017-11-16 12:12:15"); JSONObject department = new JSONObject();
department.put("id", 1);
department.put("name","技术部"); user1.put("department", department);
user2.put("department", department); // 返回一个JSONArray对象
JSONArray jsonArray = new JSONArray(); jsonArray.add(0, user1);
jsonArray.add(1, user2);
result.element("data", jsonArray); return result;
}
}
返回的json数据:
2、接口demo
以下是真实的java接口,从数据库查询数据
@ResponseBody
@RequestMapping(value="/getRoleMenuList.do", method=RequestMethod.GET)
public void getRoleMenuList(HttpServletRequest req, HttpServletResponse res, Integer roleId) throws IOException{
res.setHeader("Content-type", "application/json;charset=UTF-8");
res.setCharacterEncoding("UTF-8");
ResListData rld = new ResListData(); JSONObject result = new JSONObject(); try {
Map<String, Object> params1 = new HashMap<>();
params1.put("roleId", roleId);
params1.put("menuLevel", 1);
List<RoleJuri> fMenuList = rjService.getRoleMenuList2(params1); //一级菜单
JSONArray firstList = new JSONArray(); for(int i=0; i<fMenuList.size(); i++){
RoleJuri firstMenu = fMenuList.get(i);
JSONObject firstResult = new JSONObject();
firstResult.put("id", firstMenu.getId());
firstResult.put("name", firstMenu.getMenuName());
firstResult.put("url", firstMenu.getMenuUrl());
Map<String, Object> params2 = new HashMap<>();
params2.put("roleId", roleId);
params2.put("menuPId", firstMenu.getMenuId());
List<RoleJuri> sMenuList = rjService.getRoleMenuList2(params2); //二级菜单 JSONArray secondList = new JSONArray();
for(int j=0; j<sMenuList.size(); j++){
RoleJuri secondMenu = sMenuList.get(j);
JSONObject secondResult = new JSONObject();
secondResult.put("id", secondMenu.getId());
secondResult.put("name", secondMenu.getMenuName());
secondResult.put("url", secondMenu.getMenuUrl());
secondList.add(secondResult);
}
firstResult.put("children", secondList);
firstList.add(firstResult);
}
if(fMenuList.size() > 0){ //查询到了一级菜单
result.put("success", 1);
result.put("data", firstList);
}else{ //未查询到一级菜单
result.put("success", 0);
result.put("data", new Array());
result.put("error", "未获取到菜单数据");
}
} catch (Exception e) {
result.put("success", 0);
result.put("data", new Array());
result.put("error", "服务器运行错误");
}
res.getWriter().write(result.toString());
}
返回的json数据
java-生成任意格式的json数据的更多相关文章
- java 判断String字符串是不是json数据
java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try ...
- Ajax之处理不同格式的JSON数据
JSON是一种网络中的数据格式,主要用于网络间的数据传输,它比XML格式的数据传输速度快,使用更广. 1.Ajax处理对象格式的JSON数据: <script src="../JS/j ...
- Android 解析未知格式的json数据
1.递归一有的时候我们需要解析未知的json.或者说是动态的json.那么我们并不知道key具体是多少,或者说key不是固定的.这时候就需要解析动态key的方法. 这个方法是我在实现解析前台传入的js ...
- java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
在开发的过程中,有时候我们需要设计一个数据接口.有时候呢,数据接口和Web服务器又不在一起,所以就有跨域访问的问题. 第一步:简单的设计一个数据接口. 数据接口,听起来高大上,其实呢就是一个简单的Se ...
- java中集合格式及json格式的特点和转换
作者原创:转载请注明出处 今天在写代码,遇到一个难点,由于要调用webservice接口,返回的为一个list集合内容,从webservice调用接口返回的为一个string的io流, 在调用接口的地 ...
- Java导出带格式的Excel数据到Word表格
前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...
- java 后台实现ajax post跨域请求传递json格式数据获取json数据问题
参考大神:http://blog.csdn.net/chunqiuwei/article/details/19924821 java后台: public String ajaxProxy(Intege ...
- 拼接字符串,生成tree格式的JSON数组
之前做的执法文书的工作,现在需要从C#版本移植到网页版,从Thrift接口获取数据,加载到对应的控件中 之前用的easyui的Tree插件,通过<ul><li><span ...
随机推荐
- K-Means和图片压缩
通俗的介绍这种压缩方式,就是将原来很多的颜色用少量的颜色去表示,这样就可以减小图片大小了.下面首先我先介绍下K-Means,当你了解了K-Means那么你也很容易的可以去理解图片压缩了,最后附上图片压 ...
- 73、django之setting配置汇总
前面的随笔中我们经常会改setting配置也经常将一些配置混淆今天主要是将一些常见的配置做一个汇总. setting配置汇总 1.app路径 INSTALLED_APPS = [ 'django.co ...
- Struts2初探
我记得美妙的瞬间:在我的面前出现了你,有如昙花一现的幻影 今天写一篇Struts2框架的,在很久很久以前,Struts2可谓是称霸江湖,纵然现在有后起之秀,但Struts2依然可以成为老牌的主流框架, ...
- 通过ELK快速搭建一个你可能需要的集中化日志平台
在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以用log4net就够了,随着应用的越来越多,日志散 落在各个服务器的logs文件夹下,确实有点不大方便,这个时候 ...
- window.location.href跳转至空白页
现象:window.location.href = "XXX"调到了空白页,但是将XXX在窗口地址栏输入就会可以访问到. 原因:就是XXX前缀没有加上"http://&q ...
- CentOS6.x机器安装Python2.7.x
准备环境:CentOS6.9机器 1.查看机器默认的Python版本 [root@hlmcent69nma ~]# python -V Python [root@hlmcent69nma ~]# wh ...
- Django的ModelForm组件
创建类 from django.forms import ModelForm from django.forms import widgets as wd from app01 import mode ...
- 揭秘 HashMap 实现原理(Java 8)
HashMap 作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网面试中了.从基本的使用角度来说,它很简单,但从其内部的实现来看(尤其是 Java 8 的改进以来), ...
- 【原创】2、小程序域名配置之申请支持SSL(https)
要把一个网站对接进小程序,一.网站的域名必须通过备案(ICP备案).在买域名的时候,各个域名服务商都有提供相应的备案平台,可以方便的提交备案.工信部官网:http://www.miitbeian.go ...
- springboot集成swagger
对于搬砖的同学来说,写接口容易,写接口文档很烦,接口变动,维护接口文档就更更更烦,所以经常能发现文档与程序不匹配. 等过一段时间就连开发者也蒙圈了 Swagger2快速方便的解决了以上问题.一个能与S ...