- 浏览: 312632 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
popotang:
关注raphael,从中学习一下
基于jquery, raphael的WEB流程设计器 -
Getwaysun:
拜读了,写得非常好
iframe跨域session丢失问题 -
chen4w:
good!
Geoserver & Openlayers 学习笔记 -
holysky:
Caused by: org.springframework. ...
Spring对属性文件加密解密应用 -
holysky:
希望能解决一下!
Spring对属性文件加密解密应用
JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
下载地址:http://json-lib.sourceforge.net/
还要需要的第3方包:
org.apache.commons(3.2以上版本)
org.apache.oro
net.sf.ezmorph(ezmorph-1.0.4.jar)
nu.xom
1、List
- boolean [] boolArray = new boolean []{ true , false , true };
- JSONArray jsonArray1 = JSONArray.fromObject( boolArray );
- System.out.println( jsonArray1 );
- // prints [true,false,true]
- List list = new ArrayList();
- list.add( "first" );
- list.add( "second" );
- JSONArray jsonArray2 = JSONArray.fromObject( list );
- System.out.println( jsonArray2 );
- // prints ["first","second"]
- JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" );
- System.out.println( jsonArray3 );
- // prints ["json","is","easy"]
boolean[] boolArray = new boolean[]{true,false,true}; JSONArray jsonArray1 = JSONArray.fromObject( boolArray ); System.out.println( jsonArray1 ); // prints [true,false,true] List list = new ArrayList(); list.add( "first" ); list.add( "second" ); JSONArray jsonArray2 = JSONArray.fromObject( list ); System.out.println( jsonArray2 ); // prints ["first","second"] JSONArray jsonArray3 = JSONArray.fromObject( "['json','is','easy']" ); System.out.println( jsonArray3 ); // prints ["json","is","easy"]
2、Map
- 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 json = JSONObject.fromObject( map );
- System.out.println( json );
- //{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
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 json = JSONObject.fromObject( map ); System.out.println( json ); //{"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"name":"json","bool":true}
3、BEAN
- /**
- * Bean.java
- 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];");
- */
- JSONObject jsonObject = JSONObject.fromObject( new JsonBean() );
- System.out.println( jsonObject );
- //{"func1":function(i){ return this.options[i]; },"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){ return this.options[i]; }}
/** * Bean.java 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];"); */ JSONObject jsonObject = JSONObject.fromObject( new JsonBean() ); System.out.println( jsonObject ); //{"func1":function(i){ return this.options[i]; },"pojoId":1,"name":"json","options":["a","f"],"func2":function(i){ return this.options[i]; }}
4、BEANS
- /**
- * private int row ;
- private int col ;
- private String value ;
- *
- */
- List list = new ArrayList();
- JsonBean2 jb1 = new JsonBean2();
- jb1.setCol( 1 );
- jb1.setRow( 1 );
- jb1.setValue( "xx" );
- JsonBean2 jb2 = new JsonBean2();
- jb2.setCol( 2 );
- jb2.setRow( 2 );
- jb2.setValue( "" );
- list.add(jb1);
- list.add(jb2);
- JSONArray ja = JSONArray.fromObject(list);
- System.out.println( ja.toString() );
- //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]
/** * private int row ; private int col ; private String value ; * */ List list = new ArrayList(); JsonBean2 jb1 = new JsonBean2(); jb1.setCol(1); jb1.setRow(1); jb1.setValue("xx"); JsonBean2 jb2 = new JsonBean2(); jb2.setCol(2); jb2.setRow(2); jb2.setValue(""); list.add(jb1); list.add(jb2); JSONArray ja = JSONArray.fromObject(list); System.out.println( ja.toString() ); //[{"value":"xx","row":1,"col":1},{"value":"","row":2,"col":2}]
5、String to bean
- String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}" ;
- JSONObject jsonObject = JSONObject.fromString(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" ) );
- List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) );
- assertEquals( expected, (List) PropertyUtils.getProperty( bean, "array" ) );
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}"; JSONObject jsonObject = JSONObject.fromString(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" ) ); List expected = JSONArray.toList( jsonObject.getJSONArray( "array" ) ); assertEquals( expected, (List) PropertyUtils.getProperty( bean, "array" ) );
- String json = "{\"value\":\"xx\",\"row\":1,\"col\":1}" ;
- JSONObject jsonObject = JSONObject.fromString(json);
- JsonBean2 bean = (JsonBean2) JSONObject.toBean( jsonObject, JsonBean2. class );
- assertEquals( jsonObject.get( "col" ), new Integer( bean.getCol()) );
- assertEquals( jsonObject.get( "row" ), new Integer( bean.getRow() ) );
- assertEquals( jsonObject.get( "value" ), bean.getValue() );
String json = "{\"value\":\"xx\",\"row\":1,\"col\":1}"; JSONObject jsonObject = JSONObject.fromString(json); JsonBean2 bean = (JsonBean2) JSONObject.toBean( jsonObject, JsonBean2.class ); assertEquals( jsonObject.get( "col" ),new Integer( bean.getCol()) ); assertEquals( jsonObject.get( "row" ), new Integer( bean.getRow() ) ); assertEquals( jsonObject.get( "value" ), bean.getValue() );
6 json to xml
1)
JSONObject json = new JSONObject( true );
String xml = XMLSerializer.write( json );
<o class="object" null="true">
2)
JSONObject json = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}");
String xml = XMLSerializer.write( json );
<o class="object">
<name type="string">json</name>
<bool type="boolean">true</bool>
<int type="number">1</int>
</o>
<o class="object">
<name type="string">json</name>
<bool type="boolean">true</bool>
<int type="number">1</int>
</o>
3)
JSONArray json = JSONArray.fromObject("[1,2,3]");
String xml = XMLSerializer.write( json );
<a class="array">
<e type="number">1</e>
<e type="number">2</e>
<e type="number">3</e>
</a>
7 、xml to json
<a class="array">
<e type="function" params="i,j">
return matrix[i][j];
</e>
</a>
<a class="array">
<e type="function" params="i,j">
return matrix[i][j];
</e>
</a>
JSONArray json = (JSONArray) XMLSerializer.read( xml );
System.out.println( json );
// prints [function(i,j){ return matrix[i][j]; }]
如果需要解析的数据间存在级联关系,而互相嵌套引用,在hibernate中极容易嵌套而抛出net.sf.json.JSONException: There is a cycle in the hierarchy异常。
1.设置JSON-LIB让其过滤掉引起循环的字段。
- JsonConfig config = new JsonConfig();
- config.setIgnoreDefaultExcludes( false );
- config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
- config.registerJsonValueProcessor(Date. class , new DateJsonValueProcessor( "yyyy-MM-dd" )); //date processor register
- config.setExcludes( new String[]{ //只要设置这个数组,指定过滤哪些字段。
- "consignee" ,
- "contract" ,
- "coalInfo" ,
- "coalType" ,
- "startStation" ,
- "balanceMan" ,
- "endStation"
- });
- String tempStr = "{\"TotalRecords\":" + total.toString() + ",\"Datas\":" +JSONSerializer.toJSON(list,config).toString()+ "}" ;
- out.print(tempStr);
JsonConfig config = new JsonConfig(); config.setIgnoreDefaultExcludes(false); config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); config.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); //date processor register config.setExcludes(new String[]{//只要设置这个数组,指定过滤哪些字段。 "consignee", "contract", "coalInfo", "coalType", "startStation", "balanceMan", "endStation" }); String tempStr = "{\"TotalRecords\":"+ total.toString() +",\"Datas\":"+JSONSerializer.toJSON(list,config).toString()+"}"; out.print(tempStr);
- JsonConfig config = new JsonConfig();
- config.setIgnoreDefaultExcludes( false );
- config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
- config.registerJsonValueProcessor(Date. class , new DateJsonValueProcessor( "yyyy-MM-dd" )); //date processor register
- String tempStr = "{\"TotalRecords\":" + total.toString() + ",\"Datas\":" +JSONSerializer.toJSON(list,config).toString()+ "}" ;
-
out.print(tempStr);
写一个DateJsonValueProcessor.java
- package anni.core.web.json;
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import net.sf.json.JSONObject;
- import net.sf.json.JsonConfig;
- import net.sf.json.processors.JsonValueProcessor;
- /**
- * @author Lingo
- * @since 2007-08-02
- */
- public class DateJsonValueProcessor implements JsonValueProcessor {
- public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd" ;
- private DateFormat dateFormat;
- /**
- * 构造方法.
- *
- * @param datePattern 日期格式
- */
- public DateJsonValueProcessor(String datePattern) {
- try {
- dateFormat = new SimpleDateFormat(datePattern);
- } catch (Exception ex) {
- dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
- }
- }
- public Object processArrayValue(Object value, JsonConfig jsonConfig) {
- return process(value);
- }
- public Object processObjectValue(String key, Object value,
- JsonConfig jsonConfig) {
- return process(value);
- }
- private Object process(Object value) {
- return dateFormat.format((Date) value);
- }
- }
package anni.core.web.json;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* @author Lingo
* @since 2007-08-02
*/
public class DateJsonValueProcessor implements JsonValueProcessor {
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
private DateFormat dateFormat;
/**
* 构造方法.
*
* @param datePattern 日期格式
*/
public DateJsonValueProcessor(String datePattern) {
try {
dateFormat = new SimpleDateFormat(datePattern);
} catch (Exception ex) {
dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
}
}
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
return process(value);
}
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
return process(value);
}
private Object process(Object value) {
return dateFormat.format((Date) value);
}
}
然后在bean -> json的时候
- /**
- * write.
- *
- * @param bean obj
- * @param writer 输出流
- * @param excludes 不转换的属性数组
- * @param datePattern date到string转换的模式
- * @throws Exception 写入数据可能出现异常
- */
- public static void write(Object bean, Writer writer,
- String[] excludes, String datePattern) throws Exception {
- JsonConfig jsonConfig = configJson(excludes, datePattern);
- JSON json = JSONSerializer.toJSON(bean, jsonConfig);
- json.write(writer);
- }
- /**
- * 配置json-lib需要的excludes和datePattern.
- *
- * @param excludes 不需要转换的属性数组
- * @param datePattern 日期转换模式
- * @return JsonConfig 根据excludes和dataPattern生成的jsonConfig,用于write
- */
- public static JsonConfig configJson(String[] excludes,
- String datePattern) {
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.setExcludes(excludes);
- jsonConfig.setIgnoreDefaultExcludes(false );
- jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
- jsonConfig.registerJsonValueProcessor(Date.class ,
- new DateJsonValueProcessor(datePattern));
- return jsonConfig;
-
}
- ezmorph-1.0.6.jar (84.5 KB)
- 下载次数: 3
- json-lib-2.1-jdk15.jar (105.2 KB)
- 下载次数: 2
- commons-collections-3.1.jar (546.3 KB)
- 下载次数: 2
发表评论
-
一些有用的开源项目
2013-07-09 07:22 1018cbtoolhttp://code.google.com/p/ ... -
Javadoc转换chm帮助文档的四种方法总结
2012-01-04 22:48 1033关键词 Java ... -
解决IE和FF下载中文名称的文件文件名乱码的问题.
2011-11-02 14:06 1105下载前判断浏览器类型 采用不同的文件名编码方式 网 ... -
获取网络MP3真实地址
2010-09-20 19:26 2150MP3网站的歌曲都采用了不同的加密方法,直接从页面的源文件中是 ... -
iframe跨域session丢失问题
2010-09-09 03:47 2255哎呀,在做项目的时候,碰到一个很棘手的问题。在一个应用中通过i ... -
java 正则表达式 过滤html标签
2010-09-07 08:47 1131import java.util.regex.Matcher; ... -
验证码
2010-09-03 19:47 744<%@ page contentType="i ... -
JAVA中使用FTPClient上传下载资源
2010-03-25 11:36 16926最近发现apache很多jar包非常好用,刚好项目中要实现ft ... -
HttpClient 学习整理
2009-12-19 12:40 888HttpClient 学习整理 ... -
用RMI建立一个分布式Java应用程序详解
2009-10-29 13:46 820RMI,远程方法调用(Remote Method Invoca ... -
Java RMI之HelloWorld篇
2009-10-29 13:39 1002Java RMI 指的是远程方法调用 (Remote Me ... -
java中使用log4j将日志信息写入数据库中
2009-08-06 13:09 2441首先将log4j的jar包和Logging的jar包导入到 ... -
log4j详解
2009-07-29 21:19 959在实际编程时,要使Log4 ... -
学习Flex和BlazeDS的十三个理由
2009-06-18 10:43 802本文列述了13个Java程序 ... -
Java 语言的类、属性、方法各有哪些修饰符?简述各修饰符的使用条件
2009-06-13 10:32 29251、 类的修饰符分为: ... -
windows 平台的cvs服务器配置
2009-06-10 14:42 10011: 大家做开发的时候就是都会用到cvs版本控制,那么怎样制作 ... -
Java正则表达式匹配、替换HTML内容
2009-06-09 23:09 2914曾经了解过JavaScript的正则表达式,知道其功 ... -
Java代理模式
2009-04-08 19:21 29461.代理模式 代理模式的作用是:为其他对象提供一种代理以控 ... -
final 关键字的理解
2009-04-08 19:20 857final使得被修饰的变量"不变",但是由 ... -
Java1.6.0实现系统托盘技术
2009-04-06 21:06 1417实现系统托盘图标,借用dll动态链接库,用JAVA ...
相关推荐
总的来说,JSON与Java数据的相互转换是Web开发中的常见任务,理解并熟练掌握这些转换方法对于提升开发效率至关重要。开发者应根据项目需求和团队习惯选择合适的JSON处理库,并确保在处理过程中正确处理可能的异常,...
在Java中,我们常常需要将JSON字符串与Java对象之间进行转换,以便于数据的传输和处理。本示例提供了在Eclipse环境下实现JSON与Java对象互转的代码演示。 首先,我们要了解两个关键的Java库:org.json和...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而Java作为后端开发的主要语言,常常需要将JSON格式的数据与Java类对象进行相互转换,以便于数据的处理和传输。Jackson库是...
在Java后端,我们可以通过上述方式将处理后的数据转换成JSON格式,然后传递给前端的Echarts进行渲染。 总结一下,JSON与Java对象之间的相互转换是Java开发中常见的任务。通过使用Gson或Jackson这样的库,我们可以...
java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java list 转换为json数据java ...
本教程将深入探讨JSON与Java之间的数据转换,包括JSON对象到Java对象以及Java对象到JSON对象的转换。 首先,为了进行JSON操作,我们需要导入相应的库。在Java中,我们以Jackson库为例,添加以下依赖到项目中: ```...
总之,这个"JSON与java对象转换的工具包"是一个强大的助手,能够提高开发效率,简化Java应用中JSON数据的处理工作。它不仅提供了丰富的转换功能,还通过Demo和源码帮助开发者更好地理解和使用这些功能。
具体到这个"java实现http请求以及解析json与java对象转换"项目,你可以期待以下几个关键知识点: 1. **HTTP请求**: - GET请求:获取服务器上的资源。 - POST请求:向服务器提交数据,常用于表单提交或API接口...
在处理JSON时,可能需要将JSON解析得到的数据转换成特定的对象类型,或者将Java对象转换成适合JSON格式的数据,这时候`ezmorph`就可以派上用场。它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成...
### Java 数据格式转换成 JSON 的全面解析 #### 一、JSON 概述 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,最初由 Douglas Crockford 提出。它基于 JavaScript 的语法,但独立于任何编程语言...
2. java实现Xml与json相互转换的必要性:在Web开发中,我们经常需要在前后端之间进行数据的交换,由于后端和前端使用的数据格式可能不同,这时候就需要实现数据格式的转换,尤其是在使用Java作为后端开发语言时,...
通过理解和掌握上述知识点,开发者可以有效地在Java对象与JSON之间进行数据转换,从而提升开发效率和代码质量。在实际项目中,根据需求选择适当的序列化和反序列化策略,可以更好地满足业务需求。
form数据与json对象的互相转换(完整版) * 将web Form 的数据转化成json字符串 * 将json对象的值解析后填入web Form 在AJAX开发中这是关键技术: 1、将form中的数据利用本工具转换成json格式的字符串,再通过ajax传...
Java Bean转换为Json Schema是一种常见的数据转换操作,特别是在开发基于RESTful API的Web服务时,因为JSON Schema提供了数据验证和文档化的功能。Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO...
- `commons-beanutils-1.8.0.jar`:提供Bean属性的读写操作,方便JSON与Java Bean之间的转换。 - `commons-collections-3.2.1.jar`:提供集合操作的扩展,如映射、过滤等,有助于处理JSON中的数组和对象结构。 - ...
在Java开发中,我们经常需要将JSON字符串与Java对象之间进行转换,以便在服务器端处理来自客户端的数据,或者将数据以JSON格式发送回客户端。这里我们将重点讨论两种常用的库:Gson和Jackson,它们都提供了方便的...