javabean:Address
package com.baebae.model; public class Address { private String city; private String district; private String street; private int no; getter/setter()... }
JAVA--JSON互相转换:
【1】JAVA——>JSON
/** * <1> JAVA-->JSON * 单个对象Object-->JSONObject * 集合List/Array/Set----->JSONArray */ @Test public void testObj2JSON() throws InterruptedException { // 1.bean---->json Address addr = new Address(); addr.setCity("北京"); addr.setDistrict("清河"); addr.setStreet("安宁庄东路"); addr.setNo(200); JSONObject jsonObj = JSONObject.fromObject(addr); System.err.println("____________jsonObj_______________"); System.out.println(jsonObj); // 1.集合-->JSONArray Set<Address> set = new HashSet<Address>(); Address[] addrArray = new Address[100]; List<Address> list = new ArrayList<Address>(); for(int i=0;i<10;i++){ Address address = new Address(); address.setCity("北京"); address.setDistrict("清河"); address.setStreet("安宁庄东路"+i+"号"); address.setNo(200+i); list.add(address); addrArray[i]=address; set.add(address); } // 这里不能用JSONObject.fromObject(collection) JSONArray jsonList = JSONArray.fromObject(list); JSONArray jsonArray = JSONArray.fromObject(addrArray); JSONArray jsonSet = JSONArray.fromObject(set); // 打印结果 Thread.sleep(3000); System.err.println("____________jsonList_______________"); System.out.println(jsonList); Thread.sleep(3000); System.err.println("_____________jsonArray______________"); System.out.println(jsonArray); Thread.sleep(3000); System.err.println("______________jsonSet_____________"); System.out.println(jsonSet); Thread.sleep(3000); }
打印结果:
____________jsonObj_______________ {"city":"北京","district":"清河","no":200,"street":"安宁庄东路"} ____________jsonList_______________ [{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"}] _____________jsonArray______________ [{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null] ______________jsonSet_____________ [{"city":"北京","district":"清河","no":207,"street":"安宁庄东路7号"},{"city":"北京","district":"清河","no":202,"street":"安宁庄东路2号"},{"city":"北京","district":"清河","no":200,"street":"安宁庄东路0号"},{"city":"北京","district":"清河","no":204,"street":"安宁庄东路4号"},{"city":"北京","district":"清河","no":205,"street":"安宁庄东路5号"},{"city":"北京","district":"清河","no":208,"street":"安宁庄东路8号"},{"city":"北京","district":"清河","no":209,"street":"安宁庄东路9号"},{"city":"北京","district":"清河","no":203,"street":"安宁庄东路3号"},{"city":"北京","district":"清河","no":206,"street":"安宁庄东路6号"},{"city":"北京","district":"清河","no":201,"street":"安宁庄东路1号"}]
--------------------------------------------------------------------------------
【2】JSON---->JAVA
/** * <2> JSON-->JAVA * 1.如果字段名有错无法匹配,会发出警告;属性得到是null. * 2.转换: * ->Object * <1> 字符串封装成JSON 对象:【JSONObject.fromObject(jsonStr)】 * <2> JSON对象转换成Object:【(Address) JSONObject.toBean(jsonObject, Address.class)】 * ->Collection * <1> 字符串封装成JSONArray 对象:【JSONArray.fromObject(jsonArrayStr)】 * <2> JSONArray对象转换成Java集合:【(List<Address>)JSONArray.toCollection(jsonArray, Address.class)】 */ @Test public void testJson2Java() throws InterruptedException { // 1.JSON object String jsonStr = "{\"city\":\"北京\",\"district\":\"清河\",\"street\":\"安宁庄东路南口\",\"no\":500}"; // 3.JSONArray String jsonArrayStr = "[{\"city\":\"北京\",\"district\":\"清河\",\"street\":\"安宁庄东路南口\",\"no\":500},{\"city\":\"北京\",\"district\":\"上地\",\"street\":\"安宁庄东路\",\"no\":300}]"; JSONObject jsonObject = JSONObject.fromObject(jsonStr); JSONArray jsonArray = JSONArray.fromObject(jsonArrayStr); // JSONObject.toBean(jasonObject,Class): Bean; Address address = (Address) JSONObject.toBean(jsonObject, Address.class); List<Address> list = (List<Address>)JSONArray.toCollection(jsonArray, Address.class); // 1.输出Object Thread.sleep(1000); System.out.println("District:"+address.getDistrict()); // 2.输出Array Thread.sleep(1000); for(Address addr:list){ System.out.println(addr.getCity()+"\t"+addr.getDistrict()+"\t"+addr.getStreet()+"\t"+addr.getNo()); } }
打印结果:
District:清河 北京 清河 安宁庄东路南口 500 北京 上地 安宁庄东路 300
【总结】:
JSON————>JAVA:
->Object
<1> 字符串封装成JSON 对象:【JSONObject.fromObject(jsonStr)】
<2> JSON对象转换成Object:【(Address) JSONObject.toBean(jsonObject, Address.class)】
->Collection
<1> 字符串封装成JSONArray 对象:【JSONArray.fromObject(jsonArrayStr)】
<2> JSONArray对象转换成Java集合:【(List<Address>)JSONArray.toCollection(jsonArray, Address.class)】
JAVA————>JSON:
Object:【JSONObject.fromObject(addr)】
Collection:【JSONArray.fromObject(list)】
参考资料:
1.官方网站:http://sourceforge.net/projects/json-lib
2.所需jar包:
commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.5.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar