在做项目的时候,有时候需要向页面返回一个特定的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. Python学习(三) 输出任意格式的字符串以及字符串的切片

    在Python中想要输出一句话,如下 a='hello world' print a //打印出的是hello world print 'hello \n world' //打印出的是 //hello ...

  2. OSA-MAC: A MAC Protocol for Opportunistic Spectrum Access in Cognitive Radio Networks

    This full text paper was peer reviewed at the direction of IEEE Communications Society subject matte ...

  3. Java 学习 第三篇;面向对象

    1:Java的常用包: 核心类在java 包中:扩展类在javax包中 java.lang 系统默认自动导入 包含String Math System Thread等类 java.util 包含了工具 ...

  4. Ubuntu14.04安装PostpreSQL9.3.5记录

    安装参考:http://www.postgresql.org/download/linux/ubuntu/ y@y:~$ sudo apt-get install postgresql-9.3 pos ...

  5. 微控制器(MCU)破解秘笈--背景知识

    2.1 硅芯片安全措施的演变 工业控制器的硬件安全措施与嵌入式系统同时开始发展.三十年前的系统是由分离的部件如CPU,ROM,RAM,I/O缓冲器,串口和其他通信与控制接口组成的.如图2-1所示: 图 ...

  6. WPF笔记(2.4 Grid)——Layout

    原文:WPF笔记(2.4 Grid)--Layout 第一章已经简单介绍过这个容器,这一节详细介绍.Grid一般是用表格(Grid.Row 和Grid.Column )的,比StackPanel更细致 ...

  7. Silverlight 结合ArcGis

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/09/72064.aspx 终于有机会谈到ArcGis(觉得很冷门) ,不过既然都做 ...

  8. bzoj1632 [Usaco2007 Feb]Lilypad Pond

    Description Farmer John 建造了一个美丽的池塘,用于让他的牛们审美和锻炼.这个长方形的池子被分割成了 M 行和 N 列( 1 ≤ M ≤ 30 ; 1 ≤ N ≤ 30 ) 正方 ...

  9. JavaScript中setTimeout()和setInterval()的区别

    含义: setTimeout()和setInterval()经常被用来处理延时和定时任务.使用setTimeout()处理延时任务,而使用setInterval()方法处理定时任务: setTimeo ...

  10. Peeking Iterator 解答

    Question Given an Iterator class interface with methods: next() and hasNext(), design and implement ...