Java对象转换成xml对象和Java对象转换成JSON对象

时间:2023-03-08 16:16:15
Java对象转换成xml对象和Java对象转换成JSON对象

 1.把Java对象转换成JSON对象

apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串。也可以把JavaBean转换成JSON字符串。

json-lib的核心jar包有: 

json-lib.jar,只有两个核心类: JSONObject, JSONArray;

json-lib的依赖jar包有:

commons-lang.jar

commons-beanutils.jar

commons-logging.jar

commons-collections.jar

ezmorph.jar

将person对象转化成json对象:

javabean:

package java转json;

public class Person {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
} }

用junit测试:

    @Test
public void fun() {
JSONObject jo = new JSONObject();
jo.put("name", "张三");
jo.put("age", 12);
jo.put("sex", "男");
String s = jo.toString();
System.out.println(s);
} @Test
public void fun1() {
Person p = new Person("liSi", 32, "female");
JSONObject jo = JSONObject.fromObject(p);// 把JavaBean对象转换成json
System.out.println(jo.toString());
}
// 结果为:{"age":32,"name":"liSi","sex":"female"} @Test
public void fun2() {
Person p = new Person("liSi", 32, "female");
Person p1 = new Person("zhangSan", 312, "female");
Person[] pe = { p, p1 };
JSONArray ja = JSONArray.fromObject(pe);// 把数组转换成JSONArray
System.out.println(ja.toString()); }
// 结果:[{"age":312,"name":"zhangSan","sex":"female"},{"age":32,"name":"liSi","sex":"female"}] @Test
public void fun3() {
Person p = new Person("liSi", 32, "female");
Person p1 = new Person("zhangSan", 312, "female");
List<Person> l = new ArrayList<Person>();
l.add(p1);
l.add(p);
System.out.println(JSONArray.fromObject(l).toString());// 把list转换成JSONArray
}
// 结果为:[{"age":312,"name":"zhangSan","sex":"female"},{"age":32,"name":"liSi","sex":"female"}]

2.把Java对象转换成xml对象

可以到http://xstream.codehaus.org/地址去下载XStream安装包!

XStream的必导JAR包:

核心JAR包:xstream-1.4.7.jar;

必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);

javabean对象仍然用person;

public List<Person> p() {
Person p1 = new Person("tian", 12, "男");
Person p2 = new Person("di", 14, "nv");
Person p3 = new Person("wo", 23, "a");
List<Person> l = new ArrayList<Person>();
l.add(p1);
l.add(p2);
l.add(p3);
return l;
} @Test
public void fun4() {
List<Person> l = p();
XStream xs = new XStream();// 创建XStream对象 调用toXML把集合转换成xml字符串
String s = xs.toXML(l);
System.out.println(s);
}
/*结果
<list>
<java转xml.Person>
<name>tian</name>
<age>12</age>
<sex>男</sex>
</java转xml.Person>
<java转xml.Person>
<name>di</name>
<age>14</age>
<sex>nv</sex>
</java转xml.Person>
<java转xml.Person>
<name>wo</name>
<age>23</age>
<sex>a</sex>
</java转xml.Person>
</list>
*/
@Test
public void fun2() {
List<Person> l = p();
XStream xs = new XStream();
xs.alias("value", List.class);// 给List起别名为china
xs.alias("person", Person.class);// 给person起别名为person
xs.useAttributeFor(Person.class, "name");// 把Person类型的name属性,生成<person>元素的属性
xs.omitField(Person.class, "age");// 让City类的,名为age属性不生成对应的xml元素
String s = xs.toXML(l);
System.out.println(s);
}
/*
* <value>
<person name="tian">
<sex>男</sex>
</person>
<person name="di">
<sex>nv</sex>
</person>
<person name="wo">
<sex>a</sex>
</person>
</value> */