- 浏览: 754498 次
- 性别:
- 来自: 郑州
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
1.首先Json-lib 需要至少有下列几个jar包的支持
jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
2.Java集合类型arrays,collections同JSONArray的转换
示例1:
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray = JSONArray.fromObject(boolArray);
System.out.println(jsonArray);
输出:[true,false,true]
示例2:
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray = JSONArray.fromObject( list );
System.out.println( jsonArray );
输出:["first","second"]
示例3:
JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" );
System.out.println( jsonArray );
输出:["json","is","easy"]
3.Java对象类型JavaBean,Maps同JSONObject的转换
示例1:
Map map = new HashMap();
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( jsonObject );
输出:{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"bool":true,"name":"json"}
示例2:
class MyBean{
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];");
// getters & setters
...
}
JSONObject jsonObject = JSONObject.fromObject( new MyBean() );
System.out.println( jsonObject );
输出:{"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"name":"json","options":["a","f"],"pojoId":1}
4. JSON数据对象格式转换为JAVA类型的Beans
示例1(转换为动态的bean):
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
Object bean = JSONObject.toBean(jsonObject);
assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
assertEquals(jsonObject.get("func"), PropertyUtils.getProperty(bean, "func"));
输出:junit测试显示为绿条,即值相等。
示例2(转换为具体的bean):
String json = "{bool:true,integer:1,string:\"json\"}";
JSONObject jsonObject = JSONObject.fromObject(json);
BeanA bean = (BeanA) JSONObject.toBean(jsonObject, BeanA.class);
assertEquals(jsonObject.get("bool"), Boolean.valueOf(bean.isBool()));
assertEquals(jsonObject.get("integer"), new Integer(bean.getInteger()));
assertEquals(jsonObject.get("string"), bean.getString());
注:BeanA是具体相关属性的getters & setters方法的具体javaBean
5.Java-Json相互转换过滤器--把java类型转换为json时属性的过滤,下面我们再以3中的实例1来做个演示:
实例1:
Map map = new HashMap();
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]; }");
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if (value != null && Number.class.isAssignableFrom(value.getClass())) {
return true;
}
return false;
}
});
JSONObject json = JSONObject.fromObject(map, jsonConfig);
System.out.println(json);
输出:{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"bool":true,"name":"json"}
和上面的输出:{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"bool":true,"name":"json"}
它少了:"int":1,这段,这就是属性过滤器发挥了作用,看代码就可以知道它把值为Number型的都给过滤掉了。
实例2:
如果我们把上例中的Number.class.isAssignableFrom(value.getClass())中的Number改为String呢?
Map map = new HashMap();
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]; }");
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if (value != null && String.class.isAssignableFrom(value.getClass())) {//这里是过滤的关键
return true;
}
return false;
}
});
JSONObject json = JSONObject.fromObject(map, jsonConfig);
System.out.println(json);
输出:{"arr":["a","b"],"int":1,"bool":true}//它把Value的类型为String的都给过滤掉了。
6.Json-Java相互转换过滤器--同5相反这次--把json-转换为java时属性的过滤,下面我们以4中的实例1来做个演示:
实例1:
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Map.class);
jsonConfig.setJavaPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if ("bool".equals(name) || "double".equals(name)) {//这里是过滤的关键
return true;
}
return false;
}
});
Object bean = JSONObject.toBean(jsonObject, jsonConfig);
System.out.println(bean);
输出:{func=function(a){ return a; }, int=1, name=json, array=[1, 2]}
同4中的实例1输出:{double=2.2, func=function(a){ return a; }, int=1, name=json, bool=true, array=[1, 2]}
少了:double=2.2, bool=true,因为name为bool和double的项已经被过滤掉了。
实例2:
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";
JSONObject jsonObject = JSONObject.fromObject(json);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Map.class);
jsonConfig.setJavaPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if (value != null && String.class.isAssignableFrom(value.getClass())) {// 这里是过滤的关键
return true;
}
return false;
}
});
Object bean = JSONObject.toBean(jsonObject, jsonConfig);
System.out.println(bean);
输出:{double=2.2, func=function(a){ return a; }, int=1, bool=true, array=[1, 2]}
由此可见,无论是java转换为json还是json转换为java,过滤器都可以根据name和value来过滤。
集合转换为json字符串、json字符串在转换为集合对象例子
Vector<UserOnLineBean> userVector = new Vector<UserOnLineBean>();
for(int i=0;i<100;i++){
UserOnLineBean bean=new UserOnLineBean();
bean.setUsername("zhangsan"+i);
userVector.add(bean);
}
JSONArray jsonArray = JSONArray.fromObject( userVector );
System.out.println(jsonArray.toString());
JSONArray jsonArray2 = (JSONArray) JSONSerializer.toJSON(jsonArray.toString());
List list = (List) JSONSerializer.toJava(jsonArray);
for (Object obj : list) {
JSONObject jsonObject = JSONObject.fromObject(obj);
UserOnLineBean bean = (UserOnLineBean) JSONObject.toBean(jsonObject,
UserOnLineBean.class);
System.out.println(bean.getUsername());
}
发表评论
-
JSON-lib框架,转换JSON、XML
2011-10-12 19:43 1041Json-lib可以将Java对象转成json格式的字符串 ... -
使用xom实现xml文件数据的查找,删除,修改(转载)
2011-08-12 09:35 1285说明: 1,程序需要安装第三方jar包,即xom的jar包 ... -
将json串 转换成List<map>格式
2011-04-22 15:20 4956/** * 将json字符串转换成List<M ... -
IMPORTANT: Remove this line from json2.js before deployment.问题的解决
2010-06-01 16:03 1407在网页中加载使用了json2.js,每次打开页面,都弹出一 ... -
JSON例子
2010-06-01 13:59 12681.一个简单的列子需求分析:在一个页面中,有个公司的 ... -
Json的数据格式
2010-06-01 13:57 1168-以下内容来自互联网 1 ... -
JSON教程入门
2010-06-01 13:56 51071.)JSON定义: JSON(JavaScrip ... -
json2.js的初步学习与了解
2010-06-01 13:55 16291.)该js的下载地址 ... -
JSON参考网站
2010-06-01 13:48 1017JSON:http://www.json.org json中 ... -
基于json-lib.jar包 JSONObject-Java常用的四种用法
2010-06-01 13:48 9279基于json-lib.jar包Json实例程序1.JSONOb ... -
基于json-lib.jar包 常用的三种扩展功能
2010-06-01 13:45 19591.使用一个JSON格式化字符串来创建一个JSONFun ... -
基于json-lib.jar包 创建JSONObject的四个常用方法
2010-06-01 13:41 2192基于json-lib.jar包Json实例程序1.从头或者 ... -
使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
2010-06-01 11:47 2434当前台以JSON格式向后台传递数据的时候,对于数据中的日期属性 ...
相关推荐
`json-lib.jar`是一个流行的Java库,用于处理JSON格式的数据,它提供了丰富的API来操作JSON对象。本文将深入探讨基于`json-lib.jar`包中的`JSONObject`类的四种常用用法。 1. **创建JSONObject** 创建`JSONObject`...
JSON-lib.jar是Java平台上的一个库,用于处理JSON数据,特别适用于Java开发者在他们的应用程序中实现JSON的序列化和反序列化。 在Java中,处理JSON通常涉及两个主要任务:将Java对象转换为JSON字符串(序列化),...
在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列的方法来将Java对象转换为JSON格式,以及将JSON字符串反序列化回Java对象。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java...
标题中提到的"json-lib-2.3.jar"是json-lib库的一个具体实现,主要包含了一系列处理JSON的类和方法。这个版本的库解决了在Java中将Java对象转换为JSON对象以及反向转换的问题,特别是对于特定数据结构如`JsonObject`...
json-lib.jar 开发包及依赖包 资源--commons-beanutils-1.8.0.jar commons-collections-3.2.1.jar commons-lang-2.5.jar ezmorph-1.0.6.jar json-lib-2.3-jdk15.jar
5. 无依赖:json-lib是一个独立的jar包,无任何第三方依赖,体积小,易于在项目中使用。 6. 高性能:json-lib的性能表现不错,可以满足大多数项目的要求,适合在Android和服务器端使用。 7. 与GWT无缝集成:js
json-lib-2.4-jdk15.jar是json-lib的一个特定版本,适用于JDK 1.5环境。这个版本的库包含了一系列API和实现,使得开发人员能够无缝地在Java应用中使用JSON。它支持多种Java对象类型,包括Map、List、Set、自定义Java...
ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON(JavaScript Object Notation)数据格式。 1. **ezmorph库**: - **功能**:ezmorph库主要设计用于在Java中方便地进行...
JSON-lib是一个Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,以及将JSON数据转换回Java对象。这个库提供了多种方法来处理JSON数据,使得在Java应用程序中与JSON交互变得更加简单。JSON是一...
json-lib 及其用的jar包,ezmorph-1.0.6.jar;json-lib-2.4-jdk15.jar;commons-beanutils-1.7.jar;commons-lang-2.3.jar;commons-httpclient-3.0.1.jar;morph-1.1.1.jar
json-lib-2.4-jdk15.jar json-lib-2.4-jdk15-sources.jar json-lib-2.4-jdk15-javadoc.jar 包含文件有:json-lib-2.4-jdk15.jar json-lib-2.4-jdk15-sources.jar json-lib-2.4-jdk15-javadoc.jar
json架包,包好json-lib-2.2.3-jdk13.jar,json-lib-2.4-jdk14.jar以及附带的支持包ezmorph-1.0.6.jar,commons-logging.jar,commons-lang.jar等
总之,`json-lib.jar`及其依赖包提供了一个完整的解决方案,使得在Java环境下处理JSON数据变得更加便捷。但需要注意的是,随着技术的发展,更现代的JSON库,如Gson、Jackson和Fastjson等,已经出现了,它们在性能和...
`json-lib-2.4-jdk15.jar`是该库的一个特定版本,适用于JDK 1.5环境。这个版本的jar文件包含了处理JSON操作所需的类和方法,使得开发人员可以在他们的应用程序中方便地使用JSON。 在开发过程中,有时候`json-lib-...
json-20160810.jar
json-lib-2.2.3-jdk15-javadoc.jar json 源代码