JSON-lib 是一组java库,能够把java的beans, maps, collections, arrays 以及XML转换成JSON格式,还能把JSON格式转换成beans和DynaBeans。
下面的一个表格描述了通过JSON-lib可以实现的java和javascript类型的转换
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 |
JSON-lib依赖jdk,目前有两个版本,json-lib-x.x-jdk13依赖于jdk1.3,json-lib-x.x-jdk15依赖于jdk1.5,因此在自己的项目中用到时要把JSON-lib和jdk的版本对应起来。
除了jdk以外,JSON-lib还依赖以下几个jar包(版本为最低版本,当然我没测试如果版本过低会出现什么情况):
- jakarta commons-lang 2.5
- jakarta commons-beanutils 1.8.0
- jakarta commons-collections 3.2.1
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
JSONArray的简单使用:它能够把java的数组和集合(好像不包含Map)转换成JSONArray。
Array
boolean[] boolArray = new boolean[]{true,false,true};
JSONArray jsonArray = JSONArray.fromObject( boolArray );
System.out.println( jsonArray );
// prints [true,false,true]
List
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray = JSONArray.fromObject( list );
System.out.println( jsonArray );
// prints ["first","second"]
JSONObject的简单使用:把Bean和Map转换成JSONObject。
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 jsonObject = JSONObject.fromObject( map );
System.out.println( jsonObject );
// prints ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){ return this.arr[i]; }]
Bean
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 );
/* prints
{"name":"json","pojoId":1,"options":["a","f"],
"func1":function(i){ return this.options[i];},
"func2":function(i){ return this.options[i];}}
*/
标题定为原创,内容实则来源于http://json-lib.sourceforge.net/index.html,我只是进行了粗略的翻译,未详尽的内容请参考前面网址。