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,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,cities); String object2json = JsonUtil.object2json(p); System.out.println(object2json.toString()); } }