来源:互联网 更新时间:2026-06-12 07:22
一般用extjs开发,前后端传输数据,json几乎是绕不开的格式。这个工具类以后大家可能也用得上——把Ja va里的泛型集合直接转成json,省去手动拼接的麻烦。先看核心代码。

package com.sunweb.util.jsonfactory;
import ja va.util.List;
import com.sunweb.util.jsonfactory.jsontools.JSONArray;
import com.sunweb.util.jsonfactory.jsontools.JSONException;
import com.sunweb.util.jsonfactory.jsontools.JSONObject;
/**
* @title 公共json数据格式转换
* @author 贺彬
*/
public class ConvertJsonUtils {
public ConvertJsonUtils() {
super();
}
/**
* 功能:将泛型集合转换成分页json数据
*
* @param list
* 泛型集合
* @param countList
* 数据集合的总行数
* @return 分页json数据
*/
public static String ConvertListToPageJson(List> list, int countList) {
// 新建一个json数组
JSONArray jsonArray = new JSONArray();
// 新建一个json对象
JSONObject jsonObject = null;
// 遍历泛型集合
for (Object object : list) {
jsonObject = new JSONObject(object);
jsonArray.put(jsonObject);
}
// 转换数据格式
String json = jsonArray.toString();
// 拼接字符串
StringBuffer sb = new StringBuffer();
sb.append("{"totalCount":");
sb.append(countList);
sb.append(","rows":");
sb.append(json);
sb.append("}");
String jsonString = sb.toString();
return jsonString;
}
/**
* 功能:将泛型集合转换成分页json数据
*
* @param list
* 泛型集合
* @param countList
* 数据集合的总行数
* @return 分页json数据
*/
public static String ConvertListToPageJson(List> list){
// 新建一个json数组
JSONArray jsonArray = new JSONArray();
// 新建一个json对象
JSONObject jsonObject = null;
// 遍历泛型集合
for (Object object : list) {
jsonObject = new JSONObject(object);
jsonArray.put(jsonObject);
}
// 转换数据格式
String json = jsonArray.toString();
// 拼接字符串
JSONObject jn = new JSONObject();
try {
jn.put("records", jsonArray);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jn.toString();
}
}
这里提供了两个重载方法:一个支持分页(返回totalCount和rows结构),另一个只返回records。具体用哪个,看前端框架的需求。比如extjs的grid通常需要分页,那就用带总数那个;如果只是展示列表,用无分页版本更干净。
package com.sunweb.util.jsonfactory;
import ja va.util.ArrayList;
import ja va.util.List;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList(); //创建一个泛型的list集合
Student stu = null;
for(int i=0;i<20;i++){
stu = new Student();
stu.setId(i);
stu.setName("贺兵"+i);
//模拟有20个对象的list集合
list.add(stu);
}
//现在将集合转成json不分页
String json1 = ConvertJsonUtils.ConvertListToPageJson(list);
System.out.println(json1);
//分页,总数20条
String json2 = ConvertJsonUtils.ConvertListToPageJson(list, 20);
System.out.println(json2);
}
}
跑一下main方法,控制台会输出两个json字符串。第一个是纯数组格式,第二个是带totalCount和rows的包装结构,正好对上前端分页组件的要求。
package com.sunweb.util.jsonfactory;
public class Student {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这个类只演示了两个字段,实际项目中你可以按自己的实体类来,只要属性有getter,Json工具就能自动解析。核心思路就这么多:利用JSONObject构造器直接传入对象,再打包成JSONArray,最后拼上分页信息。代码量不大,但非常实用。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
和平精英如何做到压枪稳-和平精英怎样才能压枪稳
下载浏览器app下载安装选择推荐
免费影视剧APP推荐
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
儿子穿新中式现身大会堂 马斯克罕见用中文回应:他正在学习普通话
Elysium Above 履云录官网在哪下载 最新官方下载安装地址
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
抖音最火沙雕男生网名(精选100个)
帅气继父网名女生可爱英文(精选100个)
网络热词聊污是什么意思
阿里发布Qwen3.7-Max大模型,全球第五、国产第一
SpaceX狂揽AI人才,马斯克亲自面试且不看简历背景
金铲铲之战s17六暗星卡莎阵容玩法构筑指南
免费看电影的软件推荐
我的末日校园海斗手游上线时间是哪天
名单曝光!库克、马斯克等将随团到访中国 黄仁勋不在其中
晨字沙雕网名大全女生(精选100个)
短剧《情绪超市》剧情介绍
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc