使用Hashtable和List结合拼json数据
在做项目的时候,有时候需要向页面返回一个特定的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数据的更多相关文章
- java递归算法实现拼装树形JSON数据
有时候页面需要使用jQuery easy ui中的combotree,需要给combotree提供一个JSON数据,使用如下方法(递归)实现(下面是dao层的实现层): /** * 根据表名和父id拼 ...
- 将相关数据拼成所需JSON数据
参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html 有时候我们需要将一些数据拼装成所需要格式的JSON,可以使用如下方法,本人觉得还是比较方便 ...
- 拼json对象批量向后台添加数据
网站中如果遇到批量提交格式相同数据,可以使用json来传输 $("#catalogSave").click(function(){ var array=[]; $("[n ...
- 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
调用jQuery的ajax方法时,jQuery会根据post或者get协议对参数data进行序列化; 如果提交的数据使用复杂的json数据,例如: {userId:32323,userName:{fi ...
- 在SQL 中生成JSON数据
这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...
- 格式化JSON数据
function formatJson(json, options) { var reg = null, formatted = '', pad = 0, PADDING = ' '; options ...
- (转)获取 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 ...
- libcurl HTTP POST请求向服务器发送json数据【转】
转载:http://blog.csdn.net/dgyanyong/article/details/14166217 转载:http://blog.csdn.net/th_gsb/article/de ...
- 在java中像js那样处理json数据
工作中经常需要通过ajax向前台返回json数据,都是通过拼字符串拼出来的,很发麻烦不说,还容易出错. 于是想,能不能像js那样操作json呢?或者说更方便的操作呢? Google的gson就是这样的 ...
随机推荐
- Python学习(三) 输出任意格式的字符串以及字符串的切片
在Python中想要输出一句话,如下 a='hello world' print a //打印出的是hello world print 'hello \n world' //打印出的是 //hello ...
- 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 ...
- Java 学习 第三篇;面向对象
1:Java的常用包: 核心类在java 包中:扩展类在javax包中 java.lang 系统默认自动导入 包含String Math System Thread等类 java.util 包含了工具 ...
- Ubuntu14.04安装PostpreSQL9.3.5记录
安装参考:http://www.postgresql.org/download/linux/ubuntu/ y@y:~$ sudo apt-get install postgresql-9.3 pos ...
- 微控制器(MCU)破解秘笈--背景知识
2.1 硅芯片安全措施的演变 工业控制器的硬件安全措施与嵌入式系统同时开始发展.三十年前的系统是由分离的部件如CPU,ROM,RAM,I/O缓冲器,串口和其他通信与控制接口组成的.如图2-1所示: 图 ...
- WPF笔记(2.4 Grid)——Layout
原文:WPF笔记(2.4 Grid)--Layout 第一章已经简单介绍过这个容器,这一节详细介绍.Grid一般是用表格(Grid.Row 和Grid.Column )的,比StackPanel更细致 ...
- Silverlight 结合ArcGis
原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/09/72064.aspx 终于有机会谈到ArcGis(觉得很冷门) ,不过既然都做 ...
- bzoj1632 [Usaco2007 Feb]Lilypad Pond
Description Farmer John 建造了一个美丽的池塘,用于让他的牛们审美和锻炼.这个长方形的池子被分割成了 M 行和 N 列( 1 ≤ M ≤ 30 ; 1 ≤ N ≤ 30 ) 正方 ...
- JavaScript中setTimeout()和setInterval()的区别
含义: setTimeout()和setInterval()经常被用来处理延时和定时任务.使用setTimeout()处理延时任务,而使用setInterval()方法处理定时任务: setTimeo ...
- Peeking Iterator 解答
Question Given an Iterator class interface with methods: next() and hasNext(), design and implement ...