- 浏览: 1721827 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (337)
- javaScript校验 (11)
- java (31)
- java连接数据库 (1)
- js应用 (41)
- JQuery (15)
- linux操作命令 (12)
- loadrunner测试 (5)
- tomcat (18)
- 数据库 (12)
- eclipse (7)
- 触发器 (7)
- 表单 (3)
- ibatis (6)
- oracle (4)
- xml (1)
- Exception (6)
- spring (16)
- struts (4)
- struts 标签 (2)
- sql (8)
- sql server (6)
- 其它 (18)
- Apache (2)
- 电脑故障 (4)
- java 线程 (1)
- dwr (8)
- jackey (18)
- 总结 (34)
- gcc linux (2)
- extjs 学习 (5)
- 网站建设 (4)
- 健康 (2)
- 房地产知识 (1)
- hibernate (3)
- mysql (7)
- linux (13)
- svn (1)
最新评论
-
阳光泛滥的日子:
很好用谢谢
java.net.URISyntaxException的解决办法 -
linjianqing:
现在有更好的处理方式吗?我正也为这发愁
applet访问打印机出现的问题 -
ruyi574812039:
非常感谢您的总结!想问几个问题!假设三个项目分别以静态部署的三 ...
在Tomcat中部署Web程序的几种方式 -
yangguo:
太j8麻烦了
Spring3.1中使用缓存注解及Shiro的缓存联合 -
bellawang:
很好用谢谢
java.net.URISyntaxException的解决办法
JSON作为一种信息的载体伴随着AJAX的红火也越来越得到广大用户的青睐和认可!在没有使用JSON的时候,数据
从后台数据库到前台AJAX的返回显示,一般都要经过SQL查询--数据封装(封装成字符串或者XML文本)--前台解析
字符串或者XML文本,提取需要的东西出来。这其中包含了太多的转换关系,劳明伤财,也有很多人在探索一种
能够使大家都能认识的数据结构,这个时候大家都想到了JSON,可以说JSON也不是新的东西,出来好多年了,
Javascript一直都内置了JSON的支持,很多时候我们都是使用JSON的语法来定义一个Javascript的对象!看一看
JSON的官方网站(http://json.org/)就知道它目前基本上已经覆盖了大多数语言,这意味着大多数情况下的跨语言
环境下的数据交换,使用JSON是一个不错的选择!
1. Javascript(虽然已经内置支持,但是这里有一个开发包可以使用)
(1) 使用JSON语法定义一个Javascript对象
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
myJSONObject.bindings[0].method 将返回newURI
(2) 把普通字符串转换成JavaScript对象(需要扩展包支持)
var myObject = JSON.parse(myJSONtext, filter);
myData = JSON.parse(text, function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; });
(3) JSON对象转换成字符串
var myJSONText = JSON.stringify(myObject);
2. Java对JSON的支持(没有原生的支持,需要使用第三方的扩展包来实现)
Java的JSON开发包很多,也有很多实用且功能强大的
(1) json-lib (http://json-lib.sourceforge.net/usage.html)
a.) JSON和Java的类型对应关系
JSON Java
string <=> java.lang.String, java.lang.Character, char
number <=> java.lang.Number, byte, short, int, long, float, double
true|false <=> java.lang.Boolean, boolean
null <=> null
function <=> net.sf.json.JSONFunction
array <=> net.sf.json.JSONArray (object, string, number, boolean, function)
object <=> net.sf.json.JSONObject
b.) json-lib的依赖库
jakarta commons-lang 2.3
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1
ezmorph 1.0.3
xom 1.1(如果要用到xml文件的解析的话)
c.) 可运行实例
package com.gomt.json.jsonlib;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.beanutils.PropertyUtils;
public class JsonLibMain {
public JsonLibMain() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray = JSONArray.fromObject( boolArray );
System.out.println("***1*** = " + jsonArray );
Collection<String> list = new ArrayList<String>();
list.add( "first" );
list.add( "second" );
jsonArray = JSONArray.fromObject( list );
System.out.println("***2*** = " + jsonArray );
jsonArray = JSONArray.fromObject( "['json','is','easy']" );
System.out.println("***3*** = " + jsonArray );
Map<String, Object> map = new HashMap<String, Object>();
map.put( "name", "json" );
map.put( "bool", Boolean.TRUE );
map.put( "int", new Integer(1) );
map.put( "arr", new String[]{"a","b"} );
map.put( "func", "function(i){ return this.arr[i]; }" );
JSONObject jsonObject = JSONObject.fromObject( map );
System.out.println("***4*** = " + jsonObject );
jsonObject = JSONObject.fromObject( new MyBean() );
System.out.println("***5*** = " + jsonObject );
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
jsonObject = JSONObject.fromObject( json );
Object bean = JSONObject.toBean( jsonObject );
System.out.print("***6*** = " + jsonObject.get( "name" ) + " " + PropertyUtils.getProperty( bean, "name" ) );
System.out.print("\t " + jsonObject.get( "bool" ) + " = " + PropertyUtils.getProperty( bean, "bool" ) );
System.out.print("\t " + jsonObject.get( "int" ) + " = " + PropertyUtils.getProperty( bean, "int" ) );
System.out.print("\t " + jsonObject.get( "double" ) + " = " + PropertyUtils.getProperty( bean, "double" ) );
System.out.print("\t " + jsonObject.get( "func" ) + " = " + PropertyUtils.getProperty( bean, "func" ) );
List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );
System.out.println("\t " + expected + " = " + (List) PropertyUtils.getProperty( bean, "array" ) );
json = "{bool:true,integer:1,string:\"json\"}";
jsonObject = JSONObject.fromObject( json );
MyBean myBean = (MyBean) JSONObject.toBean( jsonObject, MyBean.class );
System.out.print("***7*** = " + jsonObject.get( "bool" ) + " = " + Boolean.valueOf( myBean.isBool() ) );
System.out.print("\t " + jsonObject.get( "integer" ) + " = " +new Integer( myBean.getInteger() ) );
System.out.println("\t " + jsonObject.get( "string" )+ " = " + myBean.getString() );
//需要用到ezmorph
json = "{'data':[{'name':'clarance','userId':100001},{'name':'peng','userId':100002}]}";
Map<String,Class<Person>> classMap = new HashMap<String,Class<Person>>();
classMap.put( "data", Person.class );
myBean = (MyBean)JSONObject.toBean(JSONObject.fromObject(json), MyBean.class, classMap);
if(myBean != null && myBean.getData() != null) {
for(Person p : myBean.getData()) {
System.out.println("***8*** = " + "用户id: " + p.getUserId() + " 用户名: " + p.getName());
}
}
jsonObject = new JSONObject( true );
XMLSerializer xmls = new XMLSerializer();
String xml = xmls.write( jsonObject );
System.out.println("***9*** = " + xml);
jsonObject = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");
xmls = new XMLSerializer();
xml = xmls.write( jsonObject );
System.out.println("***10*** = " + xml);
jsonArray = JSONArray.fromObject("[1,2,3]");
xmls = new XMLSerializer();
xml = xmls.write( jsonArray );
System.out.println("***11*** = " + xml);
xml = "<a class=\"array\"><e type=\"function\" params=\"i,j\">return matrix[i][j];</e></a> ";
xmls = new XMLSerializer();
jsonArray = (JSONArray) xmls.read( xml);
System.out.println("***12*** = " + jsonArray );
}
}
package com.gomt.json.jsonlib;
import java.util.List;
import net.sf.json.JSONFunction;
public class MyBean implements java.io.Serializable {
private static final long serialVersionUID = -784610042144660631L;
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");
private Integer integer;
private Boolean bool;
private String string;
private List<Person> data;
public Boolean isBool() {
return bool;
}
public void setBool(Boolean bool) {
this.bool = bool;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPojoId() {
return pojoId;
}
public void setPojoId(int pojoId) {
this.pojoId = pojoId;
}
public char[] getOptions() {
return options;
}
public void setOptions(char[] options) {
this.options = options;
}
public String getFunc1() {
return func1;
}
public void setFunc1(String func1) {
this.func1 = func1;
}
public JSONFunction getFunc2() {
return func2;
}
public void setFunc2(JSONFunction func2) {
this.func2 = func2;
}
public Integer getInteger() {
return integer;
}
public void setInteger(Integer integer) {
this.integer = integer;
}
public Boolean getBool() {
return bool;
}
public List<Person> getData() {
return data;
}
public void setData(List<Person> data) {
this.data = data;
}
}
package com.gomt.json.jsonlib;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 7699163849016962711L;
private int userId;
private String name;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
d.) 运行结果
***1*** = [true,false,true]
***2*** = ["first","second"]
***3*** = ["json","is","easy"]
***4*** = {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
***5*** = {"string":"","integer":0,"func1":function(i){ return this.options[i]; },"data":[],"pojoId":1,"name":"json","bool":false,"options":["a","f"],"func2":function(i){ return this.options[i]; }}
***6*** = json json true = true 1 = 1 2.2 = 2.2 function(a){ return a; } = function(a){ return a; } [1, 2] = [1, 2]
***7*** = true = true 1 = 1 json = json
***8*** = 用户id: 100001 用户名: clarance
***8*** = 用户id: 100002 用户名: peng
***9*** = <?xml version="1.0" encoding="UTF-8"?>
<o null="true"/>
***10*** = <?xml version="1.0" encoding="UTF-8"?>
<o><bool type="boolean">true</bool><int type="number">1</int><name type="string">json</name></o>
***11*** = <?xml version="1.0" encoding="UTF-8"?>
<a><e type="number">1</e><e type="number">2</e><e type="number">3</e></a>
2007-12-7 9:08:29 net.sf.json.xml.XMLSerializer getType
信息: Using default type string
***12*** = [function(i,j){ return matrix[i][j]; }]
发表评论
-
jquery的几种ajax方式对比
2010-06-07 17:55 5149jquery的ajax方式有如下几种: 1. $.post ... -
jQuery.ajax使用方法
2010-06-07 14:48 3921jQuery.ajax( options ) 参数: ... -
Jpage分页+Hibernate+Ajax+jquery+JSON通用技术<二>
2010-06-07 13:38 31906.为使界面美观使用JQu ... -
Jpage分页+Hibernate+Ajax+jquery+JSON通用技术<一>
2010-06-07 13:36 3616首先: 1.工具类page: package com.c ... -
JSON与JAVA数据的转换
2010-06-07 11:27 1715JSON与JAVA数据的转换 JSON-li ... -
struts2,jquery,ajax实现无刷新登录
2010-06-04 16:50 89461. action: /*** 会员登录*/public S ... -
struts2 jquery json进行ajax请求
2010-06-04 13:59 2749第一步:创建 名为"ajax" 的 Jav ... -
Struts2+jQuery+JSON实现异步交互
2010-06-03 11:04 39055Struts2+JQuery+JSON实现异 ... -
Javascript弹出子窗口
2010-05-26 13:47 45801、Javascript弹出子窗口 可以通过多种方式实现,下 ... -
使用java的native2ascii工具命令来转换编码gbk,gb2312,utf-8
2010-05-25 10:58 2380做struts国际化时遇到的问题,中文需要全部用ascii码来 ... -
jackey 常用资源网址总结
2010-05-21 16:43 10111. http://www.jspcn.net/moreNew ... -
Tomcat 6.0,Resin 3.1.6 配置JNDI数据库连接池
2010-05-17 17:26 43112.1.1 Tomcat数据库连接池配置---连接S ... -
图片提交按钮与表单重复提交_jackey
2010-03-26 15:42 3316很多情况下为了美化 ... -
网站建设资源网址
2009-09-27 17:57 1289中国建站网http://mb.136z.com/ 网域高科h ... -
超详细的SQL语句语法
2009-09-17 13:41 2493比较常用的SQL语句语法( ... -
java如何遍历map的所有的元素(各种方法)
2009-08-02 12:04 48012JDK1.4中 Map map = new HashMap() ... -
.jquery 迭代 select 的option 选项
2009-01-09 13:52 4516.jquery 迭代 select 的option 选项 ...
相关推荐
JavaScript-初识ajax、ajax封装、及json简单实战案例(下)
bootstrap、ajax、json、spring mvc、spring、hibernate 项目实战源码;有任何不懂的技术问题都可以联系我共同讨论
《Hadoop硬实战》包含: ·Hadoop和MapReduce的基本概念 ·85个实战和测试技术 ·真实的场景,实用的解决方案 ·如何整合MapReduce和R前言 致谢关于本书 第1 部分 背景和基本原理1 跳跃中的Hadoop1.1 什么...
Elasticsearch+技术解析与实战 前言 第1章 Elasticsearch入门 1.1 Elasticsearch是什么 1.1.1 Elasticsearch的历史 1.1.2 相关产品 1.2 全文搜索 1.2.1 Lucene介绍 1.2.2 Lucene倒排索引 1.3 ...
利用ajax技术返回普通文本,xml格式,JSON格式数据等案例;具体案例如下: 1.前端创建HTTPXMLRequest对象及实现步骤,后台用jsp的servlet处理数据; 2.封装HTTPXMLRequest对象,实现通用的ajax技术; 3.利用ajax技术...
核心技术篇(7~17章),系统深入地讲解了网络、XML和JSON、用户数据保存、安全、多媒体、绘图、动画、多点触摸和手势、GPS、重力感应、本地化、多线程、并行编程、通知、通讯簿等与企业级应用相关的核心技术特性,...
Java-web旅游项目实战案例(四个)IDEA项目源码; 4 技术选型 4.1 Web层 a) Servlet:前端控制器 b) html:视图 c) Filter:过滤器 d) BeanUtils:数据封装 e) Jackson:json序列化工具 4.2 Service层 f) Javamail:...
Elasticsearch+技术解析与实战 前言 第1章 Elasticsearch入门 1.1 Elasticsearch是什么 1.1.1 Elasticsearch的历史 1.1.2 相关产品 1.2 全文搜索 1.2.1 Lucene介绍 1.2.2 Lucene倒排索引 1.3 ...
SpringBoot志愿者管理系统-课程设计-【JSB项目实战】 https://gitee.com/dearmite_admin/jsb-volunteer SpringBoot系列文章目录 本项目效果图 SpringBoot技术很多很多 如果基础不牢,要回避的技术 推荐一下个人项目...
6 1.3.2 JSON介绍 10 1.4 安装配置 12 1.4.1 安装Java 12 1.4.2 安装Elasticsearch 12 1.4.3 配置 13 1.4.4 运行 15 1.4.5 停止 17 1.4.6 作为服务 17 1.4.7 版本升级 19 1.5 对外接口 21 1.5.1 API约定 22 1.5 .2 ...
SpringBoot宿舍管理系统--【JSB项目实战】 SpringBoot系列文章目录 SpringBoot知识范围-学习步骤【JSB系列之000】 https://blog.csdn.net/dearmite/article/details/131842655 文章目录 SpringBoot系列文章目录 本...
我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,...
微信商城+微信公众号开发,该项目根据上海某大型知名电商企业...日志管理插件工具使用lombok、分布式日志收集使用Logstash、解析JSON框架使用FastJson 数据安全加密使用MD5加盐和Base64、RSA、分布式文件存储系统Fast
SpringBoot+layui民宿管理系统前台-毕业设计-【JSB项目实战】 [SpringBoot知识范围-学习步骤【JSB系列之000】](https://blog.csdn.net/dearmite/article/details/131842655) SpringBoot系列文章目录 SpringBoot知识...
SpringBoot+layui民宿管理系统JAVA后端-毕业设计-【JSB项目实战】 [SpringBoot知识范围-学习步骤【JSB系列之000】](https://blog.csdn.net/dearmite/article/details/131842655) SpringBoot知识范围-学习步骤【JSB...
核心技术篇(7~17章),系统深入地讲解了网络、XML和JSON、用户数据保存、安全、多媒体、绘图、动画、多点触摸和手势、GPS、重力感应、本地化、多线程、并行编程、通知、通讯簿等与企业级应用相关的核心技术特性,...
《Spring3.x企业应用开发实战》是在《精通Spring2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练...