工程java
json包爲 json
代碼數組
package com.my.json; public class ChildBean { private String childName; private String childSex; private int childAge; public ChildBean() { } public ChildBean(String childName, String childSex, int childAge) { this.childName = childName; this.childSex = childSex; this.childAge = childAge; } public String getChildName() { return childName; } public void setChildName(String childName) { this.childName = childName; } public String getChildSex() { return childSex; } public void setChildSex(String childSex) { this.childSex = childSex; } public int getChildAge() { return childAge; } public void setChildAge(int childAge) { this.childAge = childAge; } @Override public String toString() { return "ChildBean [childName=" + childName + ", childSex=" + childSex + ", childAge=" + childAge + "]"; } }
package com.my.json; import java.util.ArrayList; import java.util.List; public class Person { private String name; private List<ChildBean> list = new ArrayList<ChildBean>(); private int num; private String sex; private int age; public Person() { } public Person(String name, int num, String sex, int age) { super(); this.name = name; this.num = num; this.sex = sex; this.age = age; } public int getAge() { return age; } public String getName() { return name; } public int getNum() { return num; } public String getSex() { return sex; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } public void setNum(int num) { this.num = num; } public void setSex(String sex) { this.sex = sex; } public List<ChildBean> getList() { return list; } public void setList(List<ChildBean> list) { this.list = list; } @Override public String toString() { return "Person [name=" + name + ", num=" + num + ", sex=" + sex + ", age=" + age + ",list=" + list + "]"; } }
package com.my.json; import java.util.ArrayList; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import net.sf.json.JsonConfig; public class JsonUtil { /** * 簡單類型:Json轉化爲bean * * @param jsonString * @param pojoCalss * @return */ public static Object jsonString2Object(String jsonString, Class pojoCalss) { JSONObject jsonObject = JSONObject.fromObject(jsonString); Object pojo = JSONObject.toBean(jsonObject, pojoCalss); return pojo; } /** * 複雜類型:Json轉化爲bean<br> * 用法示例:<br> * Map<String, Class> classMap = new HashMap<String, Class>(); * classMap.put("list", ChildBean.class); //指定複雜類型屬性的映射關係,可使多個放到map中<br> * Person person=(Person)JsonUtil.jsonString2Object(str2, Person.class, * classMap);<br> * * @param jsonString * @param pojoCalss * @return */ public static Object jsonString2Object(String jsonString, Class pojoCalss, Map<String, Class> classMap) { JSONObject jobj = JSONObject.fromObject(jsonString); return JSONObject.toBean(jobj, pojoCalss, classMap); } /** * 簡單|複雜類型:將java對象轉換成json字符串<br> * 支持複雜類型:Java bean 中既有屬性又有list * * @param javaObj * @return */ public static String object2JsonString(Object javaObj) { JSONObject json = JSONObject.fromObject(javaObj); return json.toString(); } /** * 從json對象集合表達式中獲得一個java對象列表 * * @param jsonString * @param pojoClass * @return */ public static List jsonList2JavaList(String jsonString, Class pojoClass) { JSONArray jsonArray = JSONArray.fromObject(jsonString); JSONObject jsonObject; Object pojoValue; List list = new ArrayList(); for (int i = 0; i < jsonArray.size(); i++) { jsonObject = jsonArray.getJSONObject(i); pojoValue = JSONObject.toBean(jsonObject, pojoClass); list.add(pojoValue); } return list; } /** * 從java對象集合表達式中獲得一個json列表 * * @param list * @return */ public static String javaList2JsonList(List list) { JSONArray jsonArray = JSONArray.fromObject(list); return jsonArray.toString(); } /** * 數組轉換爲JSON * * @param array * @return */ public static String javaArray2Json(Object[] array) { JSONArray jsonarray = JSONArray.fromObject(array); return jsonarray.toString(); } /** * Json數組轉化爲Java數組 * * @param jsonArray * @param clas * @return */ public static Object jsonArray2JavaArrray(String jsonArray, Class clas) { JsonConfig jconfig = new JsonConfig(); jconfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY); jconfig.setRootClass(clas); JSONArray jarr = JSONArray.fromObject(jsonArray); return JSONSerializer.toJava(jarr, jconfig); } /** * Map轉換成json * @param map * @return */ public static String javaMap2Json(Map<String, Object> map) { return JSONObject.fromObject(map).toString(); } /** * json轉化爲map * @param jsonString * @param pojoCalss * @return */ public static Object javaMap2Json(String jsonString, Class pojoCalss) { return jsonString2Object(jsonString, pojoCalss);//調用方法jsonString2Object } }
package com.my.json; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { @SuppressWarnings("unchecked") public static void main(String[] args) { // 普通bean轉化Json System.out.println("普通bean轉化Json:"); ChildBean p = new ChildBean("wwwww", "boy", 23); String str = JsonUtil.object2JsonString(p); System.out.println(str); // 普通Json轉化bean,如 {"childAge":23,"childName":"wwwww","childSex":"boy"} System.out.println("普通Json轉化bean:"); ChildBean c = (ChildBean) JsonUtil.jsonString2Object(str, ChildBean.class); System.out.println(c); // Java List轉化爲Json System.out.println("Java List轉化爲Json:"); List<ChildBean> list = new ArrayList<ChildBean>(); for (int i = 0; i < 5; i++) { ChildBean childBean = new ChildBean("wwwww" + i, "boy", i); list.add(childBean); } String jsonList = JsonUtil.javaList2JsonList(list); System.out.println(jsonList); // json 列表轉化爲Java List System.out.println("json 列表轉化爲Java List:"); List<ChildBean> l = (List<ChildBean>) JsonUtil.jsonList2JavaList(jsonList, ChildBean.class); System.out.println(l); // 複雜bean轉化爲Json System.out.println("複雜bean轉化爲Json:"); List<ChildBean> list2 = new ArrayList<ChildBean>(); for (int i = 0; i < 10; i++) { ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i); list2.add(childBean); } Person me = new Person("zhang", 1, "man", 1); me.setList(list2); String str2 = JsonUtil.object2JsonString(me); System.out.println("str2=" + str2); // 複雜Json轉化bean System.out.println("複雜Json轉化bean:"); Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("list", ChildBean.class); // 指定複雜類型屬性的映射關係,可使多個放到map中 Person person = (Person) JsonUtil.jsonString2Object(str2, Person.class, classMap); System.out.println(person); System.out.println(person.getList().get(0).getChildName()); // Java數組轉換爲JSON System.out.println("java數組轉換爲JSON:"); // String[] array = {"asd","dfgd","asd","234"}; ChildBean[] array = new ChildBean[10]; for (int i = 0; i < 10; i++) { ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i); array[i] = childBean; } String jsonArray = JsonUtil.javaArray2Json(array); System.out.println(jsonArray); // Json數組轉化爲Java數組 System.out.println("Json數組轉化爲Java數組:"); ChildBean[] cb = (ChildBean[]) JsonUtil.jsonArray2JavaArrray(jsonArray, ChildBean.class); System.out.println(Arrays.toString(cb)); //Map轉換成json System.out.println("Map轉換成json:"); Map<String, Object> map = new HashMap<String, Object>(); map.put("userId", 1000); map.put("userName", "張三"); map.put("userSex", "男"); String jsonStr = JsonUtil.javaMap2Json(map); System.out.println(jsonStr); //json轉化爲map System.out.println("json轉化爲map:"); Map<String, Object> jmap = (Map<String, Object>)JsonUtil.javaMap2Json(jsonStr, Map.class); System.out.println(jmap); } }
注意:ide
1.代轉化的bean若是自定義了構造方法,必須寫上默認的構造方法,不然Json轉化時候,曝出init()方法找不到!this
2.對於Date和Timestamp日期類型字段須要單獨處理(本例不含這種類型,請參看個人博客《含有Date和Timestamp的Java和Json互相轉化》)spa