使用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就是这样的 ...
随机推荐
- python3.4+pyspider爬58同城(二)
之前使用python3.4+selenium实现了爬58同城的详细信息,这次用pyspider实现,网上搜了下,目前比较流行的爬虫框架就是pyspider和scrapy,但是scrapy不支持pyth ...
- Eratosthenes筛选法计算质数
<C和指针>第6章第4道编程题: 质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法.这个算法的第一步就是写下所有从2至某个上限之间的所有整数.在算法的 ...
- 如何使用fiddler进行android手机测试
一.什么是Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的设备和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据,并且可以胡乱修改. F ...
- 使用TypeScript实现简单的HTML5贪吃蛇游戏
TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构师,已 ...
- Ubuntu14.04安装PostpreSQL9.3.5记录
安装参考:http://www.postgresql.org/download/linux/ubuntu/ y@y:~$ sudo apt-get install postgresql-9.3 pos ...
- org.springframework.dao.EmptyResultDataAccessException
public Wcrash getWcrashInfo(int id) { String sql = "select plateform_id,android_version,app_ver ...
- LeeCode-Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...
- [Exception] 当前 TransactionScope 已完成
本文来自:http://www.cnblogs.com/loafer/archive/2010/06/03/TransactionScopeComplete.html 捕获异常的时候 经常会碰到这个异 ...
- error: ‘for’ loop initial declarations are only allowed in
使用gcc,出现如下错误: thread_join.c:7:5: error: 'for' loop initial declarations are only allowed in C99 mode ...
- stagefright框架(六)-Audio Playback的流程
到目前为止,我们都只着重在video处理的部分,对于audio却只字未提.这篇文章将会开始audio处理的流程. Stagefright中关于audio的部分是交由AudioPlayer来处理,它是在 ...