1.XStream工具介绍:
这个工具即这个工具的jar包可以帮我们把JavaBean,集合(List,Set,Map)等生成xml格式的数据
jar包:
xstream-1.4.4.jar 这是核心包
xpp3_min-1.1.4c.jar 这是必须依赖的包
只要导入这两个jar包 导入到构建路径中就可以使用了..
2.json-lib介绍:
这个jar包可以帮我们把JavaBean,集合(List,Set,Map)等生成json格式的数据
jar包:
这是核心包
这是核心包的依赖包
为了方便,下面的所有案例都是在province类和city类的基础上生成的:
(1).povince类
package app.xstream;
import java.util.List;
public class Province {
private int id;
private String name;
private List<City> cities;
public Province(int id, String name, List<City> cities) {
super();
this.id = id;
this.name = name;
this.cities = cities;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<City> getCities() {
return cities;
}
public void setCities(List<City> cities) {
this.cities = cities;
}
}
(2).city类
package app.xstream;
public class City {
private int id;
private String name;
public City(int id, String string) {
super();
this.id = id;
this.name = string;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
案例1:演示xml格式数据的生成:
xStream.useAttributeFor(Province.class, "id");这句话的意思是把id当成Province的一个属性.
xStream.alias("province", Province.class);这句话的意思是把<app.province>转化为<province>格式
package app.xstream;
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.XStream;
public class XStreamDemo {
public static void main(String[] args) {
City c1=new City(1, "邢台");
City c2=new City(2, "唐山");
City c3=new City(3, "石家庄");
List<City> cities=new ArrayList<City>();
cities.add(c1);
cities.add(c2);
cities.add(c3);
Province p=new Province(1,"河北省",cities);
//创建实例
XStream xStream=new XStream();
xStream.useAttributeFor(Province.class, "id");/
xStream.useAttributeFor(Province.class, "name");
xStream.useAttributeFor(City.class, "id");
xStream.useAttributeFor(City.class, "name");
xStream.alias("province", Province.class);
xStream.alias("city", City.class);
//把对象转化为xml格式
String province = xStream.toXML(p);
System.out.println(province);
}
}
案例2:演示生成json格式的数据
这里我写了一个工具类用来实现数据的转化
package app.xstream;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.xml.XMLSerializer;
/**
* 处理json数据格式的工具类
*
* @author 金云龙
* @Date 2013-3-31
* @version 1.0
*/
public class JsonUtil {
/**
* 将数组转换成String类型的JSON数据格式
*
* @param objects
* @return
*/
public static String array2json(Object[] objects){
JSONArray jsonArray = JSONArray.fromObject(objects);
return jsonArray.toString();
}
/**
* 将list集合转换成String类型的JSON数据格式
*
* @param list
* @return
*/
public static String list2json(List list){
JSONArray jsonArray = JSONArray.fromObject(list);
return jsonArray.toString();
}
/**
* 将map集合转换成String类型的JSON数据格式
*
* @param map
* @return
*/
public static String map2json(Map map){
JSONObject jsonObject = JSONObject.fromObject(map);
return jsonObject.toString();
}
/**
* 将Object对象转换成String类型的JSON数据格式
*
* @param object
* @return
*/
public static String object2json(Object object){
JSONObject jsonObject = JSONObject.fromObject(object);
return jsonObject.toString();
}
/**
* 将XML数据格式转换成String类型的JSON数据格式
*
* @param xml
* @return
*/
public static String xml2json(String xml){
JSONArray jsonArray = (JSONArray) new XMLSerializer().read(xml);
return jsonArray.toString();
}
/**
* 除去不想生成的字段(特别适合去掉级联的对象)
*
* @param excludes
* @return
*/
public static JsonConfig configJson(String[] excludes) {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(excludes);
jsonConfig.setIgnoreDefaultExcludes(true);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
return jsonConfig;
}
}
================================================================================================
package app.xstream;
import java.util.ArrayList;
import java.util.List;
public class JsonDemo {
public static void main(String[] args) {
City c1=new City(1, "邢台");
City c2=new City(2, "唐山");
City c3=new City(3, "石家庄");
List<City> cities=new ArrayList<City>();
cities.add(c1);
cities.add(c2);
cities.add(c3);
Province p=new Province(1,"河北省",cities);
String object2json = JsonUtil.object2json(p);
System.out.println(object2json.toString());
}
}