导读:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,比xml有更好的易用性json中文网站
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
以下是以自己在项目中实际使用到JSON为原型进行举例
1、业务描述:
根据前台搜索信息进行搜索,并把后台查询出来的数据集合封装成JSON的方式展现在前台
前台页面搜索:
1
2
26
27
28
js脚本,在这里用到Prototype开源组件,意在规避ajax底层操作prototype官方网站
1function aa(){ 2 3 var url = '${ctx}/registerresult.do?method=listFor1'; 4 var name22=$F("name2"); 5 var myAjax = new Ajax.Request( 6 url, 7 { 8 method: 'post', 9 parameters:Form.serialize('form1'),10 11 evalScripts: true,12 13 onComplete:reportError14 });15}
16 function reportError(originalRequest){17 var myobj = originalRequest.responseText.evalJSON(true);18 var tdate = new Date;19 var tmonth =tdate.getMonth()+1
20 var tday=tdate.getDate();21 if(tmonth<10)22 tmonth="0"+tmonth;23 if(tday<10)24 tday="0"+tday;25 var ymdate = tdate.getYear()+""+tmonth+""+tday;26 var str="
27 str=str+"确认号反馈结果申请单号申请日期病人编号病人姓名科室名"
28 myobj.each(function(myobj1){2930 if(ymdate==myobj1[4]){31 str=str+""
32 str = str+" "
33 str = str+""+myobj1[1]+""
34 str = str+""+myobj1[2]+""
35 str = str+""+myobj1[3]+""
36 str = str+""+myobj1[4]+""
37 str = str+""+myobj1[5]+""
38 str = str+""+myobj1[6]+""
39 str = str+""+myobj1[7]+""
40 str=str+""
4142 }else{43 str=str+""
44 str = str+" "
45 str = str+""+myobj1[1]+""
46 str = str+""+myobj1[2]+""
47 str = str+""+myobj1[3]+""
48 str = str+""+myobj1[4]+""
49 str = str+""+myobj1[5]+""
50 str = str+""+myobj1[6]+""
51 str = str+""+myobj1[7]+""
52 str=str+""
53 }
54 });55 str=str+""
56 $("pp").innerHTML=str;5758 }
此脚本中aa()是获得前台form1表单中查询数据并调用后台方法;reportError()方法是获得封装后的JSONArray进行遍历并进在
前台进行展示
控制层代码如下:
1/**
2 * 此为ajax测试,把查询结果list使用JSON方式返回 3 * 4 * @param
5 * 6 */
7 public void listFor1(ActionMapping mapping, ActionForm form, 8 HttpServletRequest request, HttpServletResponse response) 9 throws Exception {10 String operate_date1 = request.getParameter("operate_date1");1112 String operate_date2 = request.getParameter("operate_date2");13 String name1 = request.getParameter("name1");14 String name2 = request.getParameter("name2");15 log.info("开放日期:" + operate_date1);16 List list = registerresultManager.queryApply(registerresultManager17 .registerResult(operate_date1, operate_date2, name1, name2),18 getListPage(request, Constant.COUNT));1920 21 JSONArray resultArray = new JSONArray();22 JSONObject jsonObject = new JSONObject();23 for (int i = 0 i < list.size(); i++) {24 Object[] d = (Object[]) list.get(i);25 jsonObject = registerresultManager.getJSON(d);26 resultArray.put(jsonObject);27 }
2829 // 调用基类方法,转化成json方式
30 renderJson(response, resultArray.toString());31 }
32
此代码是根据查询条件查询出符合条件数据集合,并把集合转化成JSONObject,并把此对象放入JSONArray
转化成JSONObject方法如下:
1/**
2 * 转换成JSON格式 3 * @param domain 4 * 是要进行转化的实体对象 5 * @return JSONObject 6 */
7 public JSONObject getJSON(Object[] domain) { 8 JSONObject jsonObject = new JSONObject(); 9 for (int i = 0 i < domain.length; i++) {10 if(domain[i]==null)11 domain[i]=""
12 jsonObject.put(String.valueOf(i), domain[i]);13 }
1415 return jsonObject;16 }
这样整个功能完成
页面效果如下:
总结:
JSON比XML在ajax方面一些优势:
1、易于解读,易于编写,与java中Map集合类似,更易于被开发人员接受
2、节省解析过程,不用象xml需要用JDom等方式解析xml
一篇不错饿参考文章 使用JSON进行数据传输
评论
# re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 16:27 久城
能否请教一下,你的后台处理中,从数据库中取出来的list转化成JSON对象,这中间用的是某个lib包?还是自己写的类用来封装和转换?
我从List中取出数据,想传回一个JSON对象到JavaScript中,不知道现在用什么方法实现比较简单。 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 22:04 xidudui
透彻! 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中)[未登录] 2008-01-09 09:08 harry520
关于 久城 的提出的问题我想解释一下
1、我用json包是jsonrpc包
2、不需要自己写类来进行封装和转换,如果你想回传一个对象给前台就用JSONObject,如果是传回一个数据集合就封装成JSONArray
上篇文章中的getJSON方法就是转换成JSONArray对象
/**
2 * 转换成JSON格式
3 * @param domain
4 * 是要进行转化的实体对象
5 * @return JSONObject
6 */
7 public JSONObject getJSON(Object[] domain) {
8 JSONObject jsonObject = new JSONObject();
9 for (int i = 0; i
10 if(domain[i]==null)
11 domain[i]="";
12 jsonObject.put(String.valueOf(i), domain[i]);
13 }
14
15 return jsonObject;
16 }
3、如果你要回传一个list集合的话就用我上述这个方法就可以,你重点看一
下控制层的listFor1方法和上述getJSON方法,然后根据你的要求把list穿入就可以了
你看一下,如果有问题请给我回复! 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中)[未登录]2008-01-10 09:07 久城
@harry520
十分感谢!~:)
这几天一直想找这样一个包! 回复 更多评论
刷新评论列表
标题
姓名
主页
验证码 *
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录 使用高级评论 新用户注册 恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-01-17 20:20 编辑过
相关文章:
由测试组件总结反射方法
实践Quartz定时任务方式大全
XFire使用详解
hibernate annotation关联关系问题解决
commons-collections开源组件的问题(关注)
关于每日构建|每小时构建
本文转自
http://www.blogjava.net/wuxj888java/archive/2008/01/08/173566.html
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,比xml有更好的易用性json中文网站
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
![](http://www.json.org/value.gif)
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
字符串(string)与C或者Java的字符串非常相似。
![](http://www.json.org/string.gif)
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
![](http://www.json.org/number.gif)
以下是以自己在项目中实际使用到JSON为原型进行举例
1、业务描述:
根据前台搜索信息进行搜索,并把后台查询出来的数据集合封装成JSON的方式展现在前台
前台页面搜索:
1
2
26
27
28
js脚本,在这里用到Prototype开源组件,意在规避ajax底层操作prototype官方网站
1function aa(){ 2 3 var url = '${ctx}/registerresult.do?method=listFor1'; 4 var name22=$F("name2"); 5 var myAjax = new Ajax.Request( 6 url, 7 { 8 method: 'post', 9 parameters:Form.serialize('form1'),10 11 evalScripts: true,12 13 onComplete:reportError14 });15}
16 function reportError(originalRequest){17 var myobj = originalRequest.responseText.evalJSON(true);18 var tdate = new Date;19 var tmonth =tdate.getMonth()+1
20 var tday=tdate.getDate();21 if(tmonth<10)22 tmonth="0"+tmonth;23 if(tday<10)24 tday="0"+tday;25 var ymdate = tdate.getYear()+""+tmonth+""+tday;26 var str="
27 str=str+"确认号反馈结果申请单号申请日期病人编号病人姓名科室名"
28 myobj.each(function(myobj1){2930 if(ymdate==myobj1[4]){31 str=str+""
32 str = str+" "
33 str = str+""+myobj1[1]+""
34 str = str+""+myobj1[2]+""
35 str = str+""+myobj1[3]+""
36 str = str+""+myobj1[4]+""
37 str = str+""+myobj1[5]+""
38 str = str+""+myobj1[6]+""
39 str = str+""+myobj1[7]+""
40 str=str+""
4142 }else{43 str=str+""
44 str = str+" "
45 str = str+""+myobj1[1]+""
46 str = str+""+myobj1[2]+""
47 str = str+""+myobj1[3]+""
48 str = str+""+myobj1[4]+""
49 str = str+""+myobj1[5]+""
50 str = str+""+myobj1[6]+""
51 str = str+""+myobj1[7]+""
52 str=str+""
53 }
54 });55 str=str+""
56 $("pp").innerHTML=str;5758 }
此脚本中aa()是获得前台form1表单中查询数据并调用后台方法;reportError()方法是获得封装后的JSONArray进行遍历并进在
前台进行展示
控制层代码如下:
1/**
2 * 此为ajax测试,把查询结果list使用JSON方式返回 3 * 4 * @param
5 * 6 */
7 public void listFor1(ActionMapping mapping, ActionForm form, 8 HttpServletRequest request, HttpServletResponse response) 9 throws Exception {10 String operate_date1 = request.getParameter("operate_date1");1112 String operate_date2 = request.getParameter("operate_date2");13 String name1 = request.getParameter("name1");14 String name2 = request.getParameter("name2");15 log.info("开放日期:" + operate_date1);16 List list = registerresultManager.queryApply(registerresultManager17 .registerResult(operate_date1, operate_date2, name1, name2),18 getListPage(request, Constant.COUNT));1920 21 JSONArray resultArray = new JSONArray();22 JSONObject jsonObject = new JSONObject();23 for (int i = 0 i < list.size(); i++) {24 Object[] d = (Object[]) list.get(i);25 jsonObject = registerresultManager.getJSON(d);26 resultArray.put(jsonObject);27 }
2829 // 调用基类方法,转化成json方式
30 renderJson(response, resultArray.toString());31 }
32
此代码是根据查询条件查询出符合条件数据集合,并把集合转化成JSONObject,并把此对象放入JSONArray
转化成JSONObject方法如下:
1/**
2 * 转换成JSON格式 3 * @param domain 4 * 是要进行转化的实体对象 5 * @return JSONObject 6 */
7 public JSONObject getJSON(Object[] domain) { 8 JSONObject jsonObject = new JSONObject(); 9 for (int i = 0 i < domain.length; i++) {10 if(domain[i]==null)11 domain[i]=""
12 jsonObject.put(String.valueOf(i), domain[i]);13 }
1415 return jsonObject;16 }
这样整个功能完成
页面效果如下:
总结:
JSON比XML在ajax方面一些优势:
1、易于解读,易于编写,与java中Map集合类似,更易于被开发人员接受
2、节省解析过程,不用象xml需要用JDom等方式解析xml
一篇不错饿参考文章 使用JSON进行数据传输
评论
# re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 16:27 久城
能否请教一下,你的后台处理中,从数据库中取出来的list转化成JSON对象,这中间用的是某个lib包?还是自己写的类用来封装和转换?
我从List中取出数据,想传回一个JSON对象到JavaScript中,不知道现在用什么方法实现比较简单。 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中) 2008-01-08 22:04 xidudui
透彻! 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中)[未登录] 2008-01-09 09:08 harry520
关于 久城 的提出的问题我想解释一下
1、我用json包是jsonrpc包
2、不需要自己写类来进行封装和转换,如果你想回传一个对象给前台就用JSONObject,如果是传回一个数据集合就封装成JSONArray
上篇文章中的getJSON方法就是转换成JSONArray对象
/**
2 * 转换成JSON格式
3 * @param domain
4 * 是要进行转化的实体对象
5 * @return JSONObject
6 */
7 public JSONObject getJSON(Object[] domain) {
8 JSONObject jsonObject = new JSONObject();
9 for (int i = 0; i
10 if(domain[i]==null)
11 domain[i]="";
12 jsonObject.put(String.valueOf(i), domain[i]);
13 }
14
15 return jsonObject;
16 }
3、如果你要回传一个list集合的话就用我上述这个方法就可以,你重点看一
下控制层的listFor1方法和上述getJSON方法,然后根据你的要求把list穿入就可以了
你看一下,如果有问题请给我回复! 回复 更多评论
# re: [原创]实践总结ajax各种使用方式(中)[未登录]2008-01-10 09:07 久城
@harry520
十分感谢!~:)
这几天一直想找这样一个包! 回复 更多评论
刷新评论列表
标题
姓名
主页
验证码 *
![](https://i-blog.csdnimg.cn/blog_migrate/e031fd6c1c1e48f3af57fd67dc470733.png)
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录 使用高级评论 新用户注册 恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2008-01-17 20:20 编辑过
相关文章:
由测试组件总结反射方法
实践Quartz定时任务方式大全
XFire使用详解
hibernate annotation关联关系问题解决
commons-collections开源组件的问题(关注)
关于每日构建|每小时构建
本文转自
http://www.blogjava.net/wuxj888java/archive/2008/01/08/173566.html