JSON是一种很简洁很重要的数据格式,通常用来交换传输数据,广泛使用于JavaScript技术中,并逐渐在各种流行编程语言中火了起来。在Java中也有一个JSON的库,用来重要作用就是Java对象与JSON、XML数据的相互转换,有着重要的应用。
开源的JSON库主页:http://json-lib.sourceforge.net/
环境:JDK5 , json-lib-2.3-jdk15
所依赖的包:json-lib-2.3-jdk15.jar,commons-collections.jar,commons- lang.jar,commons-logging.jar,commons-beanutils.jar,ezmorph-1.0.6.jar,xom-1.1.jar
java中各种类型所对应的json格式:
1.数组或集合-->JSON串
代码如下 | 复制代码 |
public static void test1() { System.out.println("------------数组或集合-->JSON串----------"); boolean[] boolArray = new boolean[]{true, false, true}; JSONArray jsonArray1 = JSONArray.fromObject(boolArray); System.out.println(jsonArray1); //输出格式: [true,false,true] List list = new ArrayList(); list.add("first"); list.add("second"); JSONArray jsonArray2 = JSONArray.fromObject(list); System.out.println(jsonArray2); //输出格式: ["first","second"] JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']"); System.out.println(jsonArray3); //输出格式: ["json","is","easy"] } |
2.Object|Map-->JSON串
代码如下 | 复制代码 |
public static void test2() { System.out.println("------------Object|Map-->JSON串----------"); 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 jsonObject1 = JSONObject.fromObject(map); System.out.println(jsonObject1); //输出格式: {"func":function(i){ return this.arr[i]; },"arr":["a","b"],"int":1,"bool":true,"name":"json"} JSONObject jsonObject2 = JSONObject.fromObject(new MyBean()); System.out.println(jsonObject2); //输出格式: {"func1":function(i){ return this.options[i]; },"func2":function(i){ return this.options[i]; },"name":"json","options":["a","f"],"pojoId":1} } public 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];"); 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; } } |
3.JSON串-->Object
代码如下 | 复制代码 |
public static void test3() { System.out.println("------------JSON串-->Object----------"); String json1 = "{name="json",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}"; JSONObject jsonObject1 = JSONObject.fromObject(json1); Object bean1 = JSONObject.toBean(jsonObject1); System.out.println(bean1); //net.sf.ezmorph.bean.MorphDynaBean@10dd1f7[ // {double=2.2, func=function(a){ return a; }, int=1, name=json, bool=true, array=[1, 2]} //] String json2 = "{bool:true,integer:1,string:"json"}"; JSONObject jsonObject2 = JSONObject.fromObject(json2); BeanA bean2 = (BeanA) JSONObject.toBean(jsonObject2, BeanA.class); System.out.println(bean2); // BeanA{bool=true, integer=1, string='json'} } public class BeanA { private boolean bool; private Integer integer; private String string; public boolean isBool() { return bool; } public void setBool(boolean bool) { this.bool = bool; } public Integer getInteger() { return integer; } public void setInteger(Integer integer) { this.integer = integer; } public String getString() { return string;
|