xstream学习,对象和xml之间转换,对象和json之间转换
来源:互联网 发布:深圳行知小学怎么样 编辑:程序博客网 时间:2024/05/25 05:36
1、测试对象
package domain;import java.util.Date;public class User {private String name;private int age;private Date birthday;private Car car;private List<Book> books;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 Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public List<Book> getBooks() {return books;}public void setBooks(List<Book> books) {this.books = books;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ", birthday=" + birthday+ ", car=" + "Car [brand=" + car.getBrand() + ", price=" + car.getPrice() + ", factory="+ car.getFactory() + "]" + ", books=" + books + "]";}}
package domain;public class Book {private String bookName;private double price;private String author;public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}@Overridepublic String toString() {return "Book [bookName=" + bookName + ", price=" + price + ", author="+ author + "]";}}
package domain;public class Car {private String brand;private double price;private String factory;public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getFactory() {return factory;}public void setFactory(String factory) {this.factory = factory;}@Overridepublic String toString() {return "Car [brand=" + brand + ", price=" + price + ", factory="+ factory + "]";}}
2、对象到xml的转换
package test;import java.util.ArrayList;public class TestBean2XML {//XStream 同时可以转换list和mappublic static void main(String[] args) {//map2XML();//------Car对象-----//Car car = new Car();car.setBrand("宝马");car.setFactory("上汽");car.setPrice(500000);//------Car对象-----////------Book对象-----//Book book1 = new Book();book1.setBookName("语文");book1.setAuthor("张三");book1.setPrice(40.6);Book book2 = new Book();book2.setBookName("数学");book2.setAuthor("李四");book2.setPrice(23.5);Book book3 = new Book();book3.setBookName("英语");book3.setAuthor("王五");book3.setPrice(34);//------Book对象-----////------User对象-----//User user = new User();user.setName("小红");user.setAge(12);user.setBirthday(new Date());user.setCar(car);List<Book> list = new ArrayList<Book>();list.add(book1);list.add(book2);list.add(book3);user.setBooks(list);//------User对象-----////测试根据bean生成xmlXStream xStream = new XStream();//xStream.alias("user", User.class);//将类重命名xStream.aliasType("用户", User.class);xStream.alias("book", Book.class);xStream.alias("car", Car.class);/**///测试重命名属性/*xStream.aliasField("姓名", User.class, "name");xStream.aliasField("汽车价格", Car.class, "price");xStream.aliasField("作者", Book.class, "author");*///测试将字段申明在 xml的属性节点上,而非文本节点上,并重命名xStream.aliasAttribute(User.class, "name", "姓名");xStream.aliasAttribute(Car.class, "price", "汽车价格");xStream.aliasAttribute(Book.class, "author", "作者");String xml = xStream.toXML(user);//System.out.println(xml);}//将map转换为xmlpublic static void map2XML(){ Map<String, Book> map = new HashMap<String, Book>(); Book bean1 = new Book(); bean1.setBookName("语文"); bean1.setPrice(234); bean1.setAuthor("张三"); Book bean2 = new Book(); bean2.setBookName("语文"); bean2.setPrice(123); bean2.setAuthor("李四"); map.put("No.1", bean1);//put map.put("No.3", bean2);//put XStream xStream = new XStream(); xStream.alias("book", Book.class); xStream.alias("key", String.class); xStream.useAttributeFor(Book.class, "bookName");String xml = xStream.toXML(map); System.out.println(xml);}}
3、xml到对象的转换
package test;import java.text.ParseException;public class TestXML2Bean {static String xml = "<user name = \"小红\">"+ "<age>12</age>"+ "<birthday>2015-07-14 14:33:42.567 UTC</birthday>"+ "<car>"+ "<brand>宝马</brand>"+ "<price>500000.0</price>"+ "<factory>上汽</factory>"+ "</car>"+ "<books>"+ "<book>"+ "<bookName>语文</bookName>"+ "<price>40.6</price>"+ "<author>张三</author>"+ "</book>"+ "<book>"+ "<bookName>数学</bookName>"+ "<price>23.5</price>"+ "<author>李四</author>"+ "</book>"+ "<book>"+ "<bookName>英语</bookName>"+ "<price>34.0</price>"+ "<author>王五</author>"+ "</book>"+ "</books>"+"</user>";public static void main(String[] args) {//这里一定要是用 DomDriver才能fromXMLXStream xStream = new XStream(new DomDriver());xStream.alias("user", User.class);xStream.alias("book", Book.class);xStream.alias("car", Car.class);xStream.registerConverter( new DateConverter());//如果是属性节点要同步设置xStreamxStream.aliasAttribute(User.class,"name","name");User user = (User)xStream.fromXML(xml);System.out.println(user.toString());}} class DateConverter implements Converter { @Override public boolean canConvert(Class arg0) { return Date.class == arg0; } @Override public void marshal(Object arg0, HierarchicalStreamWriter arg1, MarshallingContext arg2) { } @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) { GregorianCalendar calendar = new GregorianCalendar(); SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期 try { calendar.setTime(dateFm.parse(reader.getValue())); } catch (ParseException e) { throw new ConversionException(e.getMessage(), e); } return calendar.getTime(); } }
4、对象到json的转换
package test;import java.io.Writer;public class TestBean2JSON {public static void main(String[] args) {Car car = new Car();car.setBrand("宝马");car.setFactory("上汽");car.setPrice(500000);// ------Car对象-----//// ------Book对象-----//Book book1 = new Book();book1.setBookName("语文");book1.setAuthor("张三");book1.setPrice(40.6);Book book2 = new Book();book2.setBookName("数学");book2.setAuthor("李四");book2.setPrice(23.5);Book book3 = new Book();book3.setBookName("英语");book3.setAuthor("王五");book3.setPrice(34);// ------Book对象-----//// ------User对象-----//User user = new User();user.setName("小红");user.setAge(12);user.setBirthday(new Date());user.setCar(car);List<Book> list = new ArrayList<Book>();list.add(book1);list.add(book2);list.add(book3);user.setBooks(list);//使用JettisonMappedXmlDriver驱动转换 /* XStream xstream = new XStream(new JettisonMappedXmlDriver()); xstream.setMode(XStream.NO_REFERENCES); *///使用JsonHierarchicalStreamDriver驱动转换// 删除根节点XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {public HierarchicalStreamWriter createWriter(Writer out) {return new JsonWriter(out, JsonWriter.DROP_ROOT_MODE);}});xstream.alias("user", User.class);xstream.alias("book", Book.class);xstream.alias("car", Car.class);String xml = xstream.toXML(user);System.out.println(xml);}}
5、json到对象的转换
package test;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;import domain.Book;import domain.Car;import domain.User;public class TestJSON2Bean {static String json = "{\"user\": {"+ "\"name\": \"小红\","+ "\"age\": 12,"+ "\"birthday\": \"2015-07-15 13:51:18.907 UTC\","+ "\"car\": {"+ "\"brand\": \"宝马\","+ "\"price\": 500000.0,"+ "\"factory\": \"上汽\""+ "},"+ "\"books\": ["+ "{"+ "\"bookName\": \"语文\","+ "\"price\": 40.6,"+ "\"author\": \"张三\""+ "},"+ "{"+ "\"bookName\": \"数学\","+ "\"price\": 23.5,"+ "\"author\": \"李四\""+ "},"+ "{"+ "\"bookName\": \"英语\","+ "\"price\": 34.0,"+ "\"author\": \"王五\""+ "}"+ "]"+"}}";static String json1 = "{\"books\": ["+ "{"+ "\"bookName\": \"语文\","+ "\"price\": 40.6,"+ "\"author\": \"张三\""+ "},"+ "{"+ "\"bookName\": \"数学\","+ "\"price\": 23.5,"+ "\"author\": \"李四\""+ "},"+ "{"+ "\"bookName\": \"英语\","+ "\"price\": 34.0,"+ "\"author\": \"王五\""+ "}"+ "]}";public static void main(String[] args) {System.out.println(json);XStream xstream = new XStream(new JettisonMappedXmlDriver());xstream.alias("user", User.class);xstream.alias("book", Book.class); xstream.alias("car", Car.class); User user = (User)xstream.fromXML(json); //最后失败,貌似不能转 集合System.out.println(user.toString());}}
0 0
- xstream学习,对象和xml之间转换,对象和json之间转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- java 使用XStream Java对象和XML之间的转换
- 利用XStream在Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- 使用XStream将Java对象和XML之间相互转换
- 利用XStream在Java对象和XML之间相互转换
- XStream: Java对象和XML之间相互转换的利器
- 利用XStream在Java对象和XML之间相互转换
- java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换
- XStream在Java对象和XML之间相互转换 工具类
- json 和对象之间的转换
- JSON对象和字符串之间的转换
- JSON,String和对象之间的转换
- json串和对象之间的转换
- IOS学习笔记-第一天
- iOS Scrollview中的AutoLayout(纯IB)
- 初探nginx架构
- hdu4810组合数学
- 通过Python编写模拟器对方案进行测试和分析的方法_Prj001
- xstream学习,对象和xml之间转换,对象和json之间转换
- 学习使用豆瓣API
- Android中安装asset文件下的apk
- 分享一个比较有意思的字典相等比较扩展方法DictionaryEqual
- MAP
- Codeforces 558C Amr and Chemistry 规律
- 认知实习有感
- 黑马程序员-Java基础--Thread类
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法