一. jar包
- commons-lang.jar
- commons-beanutils.jar
- commons-collections.jar
- commons-logging.jar
- ezmorph.jar
- json-lib-2.2.2-jdk15.jar
二. 代码
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Test { public static void main(String[] args) { new Test().test1(); new Test().test2(); new Test().test3(); new Test().test4(); new Test().test5(); new Test().test6(); new Test().test7(); } /** * JSON字符串转JSONObject对象 */ public void test1() { String jsonStr = "{"name":"ZhangSan","sex":"boy","age":18}"; JSONObject jsonObj = JSONObject.fromObject(jsonStr); System.out.println(jsonObj.toString()); } /** * 简单JSONObject对象转java对象 */ public void test2() { JSONObject jsonObj = new JSONObject(); jsonObj.put("name", "LiSi"); jsonObj.put("sex", "girl"); jsonObj.put("age", 17); Student student = (Student) JSONObject.toBean(jsonObj, Student.class); System.out.println(student.getName() + " | " + student.getSex() + " | " + student.getAge()); } /** * 复杂JSONObject对象转java对象 */ @SuppressWarnings("rawtypes") public void test3() { List<Student> students = new ArrayList<Student>(); students.add(new Student("ZhangSan", "boy", 18)); students.add(new Student("LiSi", "girl", 17)); BanJi banji = new BanJi(); banji.setBanJiName("日语二班"); banji.setStudents(students); JSONObject jsonObj = JSONObject.fromObject(banji); Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("students", Student.class); BanJi banji2 = (BanJi) JSONObject.toBean(jsonObj, BanJi.class, classMap); System.out.println(banji2.getStudents().get(0).getName()); // 验证转换是否成功 } /** * 简单java集合对象转JSONArray */ public void test4() { List<Student> students = new ArrayList<Student>(); students.add(new Student("ZhangSan", "boy", 18)); students.add(new Student("LiSi", "girl", 17)); JSONArray jsonArray = JSONArray.fromObject(students); System.out.println(jsonArray.toString()); } /** * JSONArray转java集合对象 */ @SuppressWarnings({ "unchecked", "deprecation" }) public void test5() { JSONObject jsonObj1 = new JSONObject(); jsonObj1.put("name", "ZhangSan"); jsonObj1.put("sex", "boy"); jsonObj1.put("age", 18); JSONObject jsonObj2 = new JSONObject(); jsonObj2.put("name", "lisi"); jsonObj2.put("sex", "girl"); jsonObj2.put("age", 17); JSONArray jsonArray = new JSONArray(); jsonArray.add(0, jsonObj1); jsonArray.add(1, jsonObj2); List<Student> students3 = JSONArray.toList(jsonArray, Student.class); System.out.println(students3.get(0).getName()); System.out.println(students3.get(1).getName()); } /** * 复杂java集合对象转JSONArray */ @SuppressWarnings({ "rawtypes", "unchecked", "deprecation" }) public void test6() { BanJi banji1 = new BanJi(); banji1.setBanJiName("日语一班"); List<Student> students1 = new ArrayList<Student>(); students1.add(new Student("ZhangSan", "boy", 18)); banji1.setStudents(students1); BanJi banji2 = new BanJi(); banji2.setBanJiName("日语二班"); List<Student> students2 = new ArrayList<Student>(); students1.add(new Student("LiSi", "girl", 17)); banji2.setStudents(students2); List<BanJi> banjiList = new ArrayList<BanJi>(); banjiList.add(banji1); banjiList.add(banji2); JSONArray jsonArray = JSONArray.fromObject(banjiList); Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("students", Student.class); List<BanJi> banjiList2 = JSONArray.toList(jsonArray, BanJi.class, classMap); System.out.println(banjiList2.get(0).getStudents().get(0).getName()); } /** * 拆分JSONArray为JSONObject */ public void test7() { JSONObject jsonObj1 = new JSONObject(); jsonObj1.put("name", "ZhangSan"); jsonObj1.put("sex", "boy"); jsonObj1.put("age", 18); JSONObject jsonObj2 = new JSONObject(); jsonObj2.put("name", "lisi"); jsonObj2.put("sex", "girl"); jsonObj2.put("age", 17); JSONArray jsonArray = new JSONArray(); jsonArray.add(0, jsonObj1); jsonArray.add(1, jsonObj2); JSONObject object = (JSONObject) jsonArray.get(0); System.out.println(object.toString()); } }
import java.util.List; /** * 班级类 */ public class BanJi { private String banJiName; // 班级名 private List<Student> students; // 学生 /** * 构造函数 */ public BanJi() { super(); } // getters/setters(略) }
/** * 学生类 */ public class Student { private String name; // 姓名 private String sex; // 性别 private int age; // 年龄 /** * 构造函数 */ public Student() { super(); } /** * 构造函数 */ public Student(String name, String sex, int age) { super(); this.name = name; this.sex = sex; this.age = age; } // getters/setters(略) }