`
yaasshole
  • 浏览: 665719 次
文章分类
社区版块
存档分类
最新评论

JSON数据和对象之间的相互转换

 
阅读更多

JSON数据的转换

1.在转换之前要导入几个包,分别为

commons-beanutils-1.7.0.jar

commons-chain-1.1.jar

commons-collections-3.2.1.jar

commons-digester-1.8.jar

commons-lang-2.5.jar

commons-logging-1.1.1.jar

ezmorph-1.0.6.jar

json-lib-2.3-jdk15.jar

morph-1.1.1.jar

morph-sandbox-1.1.1.jar

mysql-connector-java-5.1.6-bin.jar

其中有几个包可以不倒,不过一般情况下都倒进去

JSON数据和对象之间的相互转换 以Teacher和Studetn为例

Teacher.java

1. package cn.csdn.hr.domain;

2.

3. import java.util.Date;

4. import java.util.List;

5.

6. public class Teacher {

7.

8. private String name;

9. private String sex;

10. private int age;

11. private Date birth;

12.

13. //教室所有的学生

14. private List<Student> stus;

15.

16. public Teacher() {

17. super();

18. // TODO Auto-generated constructor stub

19. }

20.

21. public String getName() {

22. return name;

23. }

24.

25. public void setName(String name) {

26. this.name = name;

27. }

28.

29. public String getSex() {

30. return sex;

31. }

32.

33. public void setSex(String sex) {

34. this.sex = sex;

35. }

36.

37. public int getAge() {

38. return age;

39. }

40.

41. public void setAge(int age) {

42. this.age = age;

43. }

44.

45. public Date getBirth() {

46. return birth;

47. }

48.

49. public void setBirth(Date birth) {

50. this.birth = birth;

51. }

52.

53.

54. public List<Student> getStus() {

55. return stus;

56. }

57.

58. public void setStus(List<Student> stus) {

59. this.stus = stus;

60. }

61.

62. @Override

63. public String toString() {

64. return "Teacher [age=" + age + ", birth=" + birth + ", name=" + name

65. + ", sex=" + sex + ", stus=" + stus + "]";

66. }

67.

68. }

Student.java

package cn.csdn.hr.domain;

public class Student {

private String name;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

1. 把java对象转换为JSON数据

2. public void fromObject() {

3. // 将java对象转换为JSON数据

4. Teacher teacher = new Teacher();

5. teacher.setName("老王");

6. teacher.setAge(23);

7. teacher.setBirth(new Date());

8.

9. // JSON字符串 引入类库文件

10.

11. System.out.println(JSONObject.fromObject(teacher));

12.

13. /**

14. * 输出的内容为 { "age":23, "birth":{ "date":28, "day":2, "hours":1,

15. * "minutes":21, "month":1, "seconds":33, "time":1330392093234,

16. * "timezoneOffset":0, "year":112 }, "name":"老王", "sex":""}

17. */

18.

19. }

2. 将java集合转换为JSON字符串

public void fromVector() {

List<Teacher> teas = new ArrayList<Teacher>();

for (int i = 0; i < 3; i++) {

Teacher teacher = new Teacher();

teacher.setName("老王");

teacher.setAge(23);

teacher.setBirth(new Date());

teas.add(teacher);

}

// teas集合

System.out.println(JSONArray.fromObject(teas).toString());

}

/**

* 执行的结果是3个一样的对象

* [{"age":23,"birth":{"date":28,"day":2,"hours":1,"minutes":29

* ,"month":1,"seconds"

* :54,"time":1330392594187,"timezoneOffset":0,"year":112

* },"name":"老王","sex":

* ""},{"age":23,"birth":{"date":28,"day":2,"hours":1,"minutes"

* :29,"month":1,

* "seconds":54,"time":1330392594187,"timezoneOffset":0,"year":

* 112},"name":"老王"

* ,"sex":""},{"age":23,"birth":{"date":28,"day":2,"hours":1,

* "minutes":29,"month"

* :1,"seconds":54,"time":1330392594187,"timezoneOffset":

* 0,"year":112},"name":"老王","sex":""}]

*

*

*/

3. 将JSON字符串转换为对象

@Test

public void fromJsonObject() {

// 第一步:定义成字符串

String teaObj = "{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":20,\"month\":1,\"seconds\":25,\"time\":1330392025906,\"timezoneOffset\":-480,\"year\":112},\"name\":\"陈\",\"sex\":\"男\"}";

// 第二步:使用JsonObject.fromObject方法将其字符串转换为JsonObject对象

JSONObject jsonObj = JSONObject.fromObject(teaObj);

// 第三步:调用JsonObject的toBean的方法,将其转换成一个Object对象

Teacher teac = (Teacher) JSONObject.toBean(jsonObj, Teacher.class);

System.out.println(teac.toString());

}

4.将数组的字符串转换成集合对象

public void fromJsonArray() {

// 声明字符串

String teaArr = "[{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"陈\",\"sex\":\"男\"},{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"陈\",\"sex\":\"男\"},{\"age\":28,\"birth\":{\"date\":28,\"day\":2,\"hours\":9,\"minutes\":28,\"month\":1,\"seconds\":44,\"time\":1330392524093,\"timezoneOffset\":-480,\"year\":112},\"name\":\"陈\",\"sex\":\"男\"}]";

// 调用JsonArray.fromObject方法将其字符串转成一个JsonArray'对象

JSONArray jsonArra = JSONArray.fromObject(teaArr);

// 第三步:调用

List<Teacher> teas = (List<Teacher>) JSONArray.toCollection(jsonArra,

Teacher.class);

for (Teacher tea : teas) {

System.out.println(tea.toString());

}

}

有一个最简单的方法是得到字符串之后,直接用:

eval("("+datas+")"); datas为得到 的字符串

5.将java对象转换为json数据,即是通过Teacher来得到Student的实体

public void fromObject1(){

// 将java对象转换为JSON数据

Teacher teacher = new Teacher();

teacher.setName("老王");

teacher.setAge(23);

teacher.setBirth(new Date());

List<Student> seas = new ArrayList<Student>();

for (int i = 0; i < 3; i++) {

Student stu = new Student();

stu.setName("熊熊"+i);

seas.add(stu);

}

teacher.setStus(seas);

System.out.println(JSONObject.fromObject(teacher).toString());

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics