在做项目的时候,有时候需要向页面返回一个特定的json类型的数据,一般情况下会有下面的方法进行拼接:

    public String chongzhiList() throws Exception {
List list = new ArrayList();
if (StringUtils.isNotEmpty(psCode)) { list = totalQuantityManager.findPsList(psCode);
}
//创建StringBuffer类型的变量json,用于存放拼装好的json数据
StringBuffer json = new StringBuffer("[");
//如果list不为空则执行if内的for循环
if(list!=null && list.size()>0){
for(int i=0;i<list.size();i++){
Object[] strs = (Object[]) list.get(i);
json.append("{\"id\":" + "\"" + strs[0] + "\",");
json.append("\"wuranwu\":" + "\"" + strs[1] + "\",");
json.append("\"danwei\":" + "\"" + strs[2] + "\",");
json.append("\"yipaifangliang\":" + "\"" + strs[3] + "\",");
json.append("\"chongzhiliang\":" + "\"" + strs[4] + "\",");
json.append("\"xukeliang\":" + "\"" + strs[5] + "\",");
json.append("\"yuliang\":" + "\"" + strs[6] + "\",");
json.append("\"icyuliang\":" + "\"" + strs[7] + "\"}");
if(i<list.size()-1){
json.append(",");
}
}
}
json.append("]");
this.jsonObject = json.toString();
return JSON;
}

这种方式在碰到更加复杂的情况下就显得力不从心了,会经常出现一些少逗号,多括号的问题,下面介绍一种方法拼接特定的json类型数据:

利用Hashtable和List结合,使用JSONObject类进行转化的方式会更加的方便,相关文章链接:JSONObject和JSONArray

1.拼出给定的json数据:

{
"huaXue": [
400,
1132,
601,
500,
120,
90,
1000
],
"anDan": [
1320,
7000,
601,
234,
120,
50000,
20
],
"erYangHualiu": [
1320,
1132,
601,
234,
120,
90,
20
],
"danYangHuawu": [
1320,
1132,
601,
234,
120,
90,
20
]
}

方法如下:

    public String getMonthFlow() throws Exception{
//创建List对象用来存放接收结果集
List list = new ArrayList();
list = totalQuantityManager.getMonthFlow();
//创建list1,list2,list3,list4分别用来存放每一条数据中的特定值
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
ArrayList list3 = new ArrayList();
ArrayList list4 = new ArrayList(); //for循环用来循环每一条数据,从每一条数据中取出特定的数据放入集合中
for (int i = 0; i < list.size(); i++) {
Object[] strs = (Object[]) list.get(i);
list1.add(strs[1]);
list2.add(strs[2]);
list3.add(strs[4]);
list4.add(strs[5]);
} //创建一个哈希表对象,用于装载键值对形式的数据
Hashtable dic = new Hashtable();
dic.put("huaXue",list1);
dic.put("anDan",list2);
dic.put("erYangHualiu",list3);
dic.put("danYangHuawu",list4);
//利用JSONObject类将哈希表对象转换为json类型的数据
this.jsonObject=JSONObject.fromObject(dic).toString();
return JSON;
}

2.转换下面类型的json数据

{
"type0": [
{
"month": 1,
"value": 400
},
{
"month": 2,
"value": 1132
},
{
"month": 3,
"value": 601
},
{
"month": 4,
"value": 500
},
{
"month": 5,
"value": 120
},
{
"month": 6,
"value": 90
},
{
"month": 7,
"value": 1000
}
],
"type1": [
{
"month": 1,
"value": 400
},
{
"month": 2,
"value": 1132
},
{
"month": 3,
"value": 601
},
{
"month": 4,
"value": 500
},
{
"month": 5,
"value": 120
},
{
"month": 6,
"value": 90
},
{
"month": 7,
"value": 1000
}
],
"type2": [
{
"month": 1,
"value": 400
},
{
"month": 2,
"value": 1132
},
{
"month": 3,
"value": 601
},
{
"month": 4,
"value": 500
},
{
"month": 5,
"value": 120
},
{
"month": 6,
"value": 90
},
{
"month": 7,
"value": 1000
}
],
"type3": [
{
"month": 1,
"value": 400
},
{
"month": 2,
"value": 1132
},
{
"month": 3,
"value": 601
},
{
"month": 4,
"value": 500
},
{
"month": 5,
"value": 120
},
{
"month": 6,
"value": 90
},
{
"month": 7,
"value": 1000
}
]
}

方法如下:

    public String getMonthFlow() throws Exception{
//方法一:
//月份
String month = "";
List list = new ArrayList();
list = totalQuantityManager.getMonthFlow(); ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
ArrayList list3 = new ArrayList();
ArrayList list4 = new ArrayList(); Hashtable dic1 = new Hashtable();
Hashtable dic2 = new Hashtable();
Hashtable dic3 = new Hashtable();
Hashtable dic4 = new Hashtable(); for (int i = 0; i < 4*list.size(); i++) {
Object[] strs = (Object[]) list.get(i%7);
String monTH = "";
if (strs[0]!=null) {
monTH = strs[0].toString().substring(4);
}
if ("01".equals(monTH)) {
month = "1";
}else if ("02".equals(monTH)) {
month = "2";
}else if ("03".equals(monTH)) {
month = "3";
}else if ("04".equals(monTH)) {
month = "4";
}else if ("05".equals(monTH)) {
month = "5";
}else if ("06".equals(monTH)) {
month = "6";
}else if ("07".equals(monTH)) {
month = "7";
}else if ("08".equals(monTH)) {
month = "8";
}else if ("09".equals(monTH)) {
month = "9";
}else if ("10".equals(monTH)) {
month = "10";
}else if ("11".equals(monTH)) {
month = "11";
}else if ("12".equals(monTH)) {
month = "12";
}
if (i/7==0) {
dic1.put("month", month);
dic1.put("value", strs[1]);
list1.add(dic1);
dic1 = new Hashtable();
}else if (i/7==1) {
dic2.put("month", month);
dic2.put("value", strs[2]);
list2.add(dic2);
dic2 = new Hashtable();
}else if (i/7==2){
dic3.put("month", month);
dic3.put("value", strs[3]);
list3.add(dic3);
dic3 = new Hashtable();
}else if (i/7==3) {
dic4.put("month", month);
dic4.put("value", strs[4]);
list4.add(dic4);
dic4 = new Hashtable();
}
}
//哈希表对象(存放键值对())
Hashtable dic = new Hashtable();
dic.put("type0",list1);
dic.put("type1",list2);
dic.put("type2",list3);
dic.put("type3",list4);
this.jsonObject=JSONObject.fromObject(dic).toString(); /* //方法二:
List list = new ArrayList();
list = totalQuantityManager.getMonthFlow();
Hashtable dic = new Hashtable();
for(int j=0;j<4;j++){
ArrayList list_s = new ArrayList();
//循环行
for (int i = 0; i < list.size(); i++) {
Object[] strs = (Object[]) list.get(i);
Hashtable dic1 = new Hashtable();
dic1.put("month", strs[0]);
dic1.put("value", strs[1]);
list1.add(dic1);
Hashtable dic2 = new Hashtable();
dic2.put("month", strs[0]);
dic2.put("value", strs[2]);
Hashtable dic3 = new Hashtable();
dic3.put("month", strs[0]);
dic3.put("value", strs[3]);
Hashtable dic4 = new Hashtable();
dic4.put("month", strs[0]);
dic4.put("value", strs[4]); }
dic.put("type"+j,list_s);
}
this.jsonObject=JSONObject.fromObject(dic).toString();*/
return JSON;
}

使用Hashtable和List结合拼json数据的更多相关文章

  1. java递归算法实现拼装树形JSON数据

    有时候页面需要使用jQuery easy ui中的combotree,需要给combotree提供一个JSON数据,使用如下方法(递归)实现(下面是dao层的实现层): /** * 根据表名和父id拼 ...

  2. 将相关数据拼成所需JSON数据

    参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html 有时候我们需要将一些数据拼装成所需要格式的JSON,可以使用如下方法,本人觉得还是比较方便 ...

  3. 拼json对象批量向后台添加数据

    网站中如果遇到批量提交格式相同数据,可以使用json来传输 $("#catalogSave").click(function(){ var array=[]; $("[n ...

  4. 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇

    调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化; 如果提交的数据使用复杂的json数据,例如: {userId:32323,userName:{fi ...

  5. 在SQL 中生成JSON数据

    这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...

  6. 格式化JSON数据

    function formatJson(json, options) { var reg = null, formatted = '', pad = 0, PADDING = ' '; options ...

  7. (转)获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据

    request中发送json数据用post方式发送Content-type用application/json;charset=utf-8方式发送的话,直接用springMVC的@RequestBody ...

  8. libcurl HTTP POST请求向服务器发送json数据【转】

    转载:http://blog.csdn.net/dgyanyong/article/details/14166217 转载:http://blog.csdn.net/th_gsb/article/de ...

  9. 在java中像js那样处理json数据

    工作中经常需要通过ajax向前台返回json数据,都是通过拼字符串拼出来的,很发麻烦不说,还容易出错. 于是想,能不能像js那样操作json呢?或者说更方便的操作呢? Google的gson就是这样的 ...

随机推荐

  1. mysql之主从复制

    原理--> 在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器. 原理--> mysql的主从复制基于异步,主要有三个进程执行,分 ...

  2. android继续学习相关

    最近不是很忙,但是慢慢就忘记了学习. 我总是选中了一条路后,怀疑它的正确性.我也知道这不好. 一年前,我买了一个ipad,然后玩app上的游戏,觉得很好玩,而且上面很多都是收费的, 当时就觉得,为什么 ...

  3. BZOJ 1064 假面舞会

    http://www.lydsy.com/JudgeOnline/problem.php?id=1064 思路:第一眼看的时候以为是差分约束,但是是做不了的,不过能保证的就是这题绝对是图论题...(废 ...

  4. 直接地址跳转C实现

    <C缺陷和陷阱>讲过的一种方法: ( *( void (*)() ) 0 )(); //跳转到0地址执行 解析: 1.void (*p_fun)(void); //声明函数指针 2.voi ...

  5. win7 奇怪的temp用户

    在C:\Users\TEMP 有个temp用户,win+r打开的也是 C:\Users\TEMP>,而不是C:\User\Administrator. 以下文章转自: http://hi.bai ...

  6. Grid++Report 报表开发工具

      Grid++Report 报表开发工具   版本 更新日期 大小 下载 说明 Grid++Repoert6.0.0.6 2015/08/08 16.0M [下载] 锐浪报表工具最新版本,新增功能说 ...

  7. App 推荐:Spotify

    之前一直用网易云音乐听歌,后来因为沸沸扬扬的 XCode 注入病毒事件,就把它卸了(无奈脸=.=) 对比国内其它音乐App,私心觉得网易云音乐还是不错的.没有很多花里胡哨的装饰,里面的歌单做的也还算精 ...

  8. Remove Nth Node From End of List 解答

    Question Given a linked list, remove the nth node from the end of list and return its head. For exam ...

  9. Linux如何实现开机启动程序详解

    我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO 启动之 ...

  10. Capture the Flag(模拟)

    Capture the Flag Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge In computer se ...