关于java实体在xml报文和json报文之间的相互转换
来源:互联网 发布:财务报表制作软件 编辑:程序博客网 时间:2024/05/01 01:48
- 背景
- 对象转换为XML格式报文
- 对象转换为JSON格式报文
相关Jar包下载
思来想去,还是觉得做做工作日志是很有必要的,近来项目中总是重复用着某一个知识点,本人记性差,几乎每次用每次都在查,现在做做工作总结,把常用的都记下来,没事的时候看看,这样既能加深自己对这些知识的印象防止遗忘过快,又能同各位大神交流心得指点不足,岂不是两全其美。最近做的项目涉及到跨项目数据传输,经常用到对象转换为XML或者是JSON格式,然后通过HttpClient或者是WebService进行传输,今天只讲让我蛮头疼的前两项。闲话不多说,首次写博客,不足之处还请各位多多指教。
通用对象赋值
首先先创建三个对象 Bird、Cat、Dog 三个对象都有相同的属性,keyProperty、name、age、gender、holder 贴代码:
<( ̄3 ̄)>
Bird.java
public class Bird { private int keyProperty; private String name; private int age; private int gender; private String holder; public int getKeyProperty() { return keyProperty; } public void setKeyProperty(int keyProperty) { this.keyProperty = keyProperty; } 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 int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public String getHolder() { return holder; } public void setHolder(String holder) { this.holder = holder; }}
Cat.java
public class Cat { private int keyProperty; private String name; private int age; private int gender; private String holder; public int getKeyProperty() { return keyProperty; } public void setKeyProperty(int keyProperty) { this.keyProperty = keyProperty; } 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 int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public String getHolder() { return holder; } public void setHolder(String holder) { this.holder = holder; }}
Dog.java
public class Dog { private int keyProperty; private String name; private int age; private int gender; private String holder; public int getKeyProperty() { return keyProperty; } public void setKeyProperty(int keyProperty) { this.keyProperty = keyProperty; } 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 int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } public String getHolder() { return holder; } public void setHolder(String holder) { this.holder = holder; }}
怕实体不贴全,你们有的粘贴复制过去还要再写实体,索性帮你们把实体写了,直接复制吧,记得头要有包名package.xx.xx.xxx这个自己写。
实体赋值方法:
public class BayAnimalAssignMent { public static BayAnimal bayAnimalAssignment() { // 1.first animal : dog named circle Dog circle = new Dog(); circle.setKeyProperty(1); circle.setName("Circle"); circle.setAge(2); circle.setGender(1);// male circle.setHolder("Bay"); // 2.second animal : cat named coil Cat coil = new Cat(); coil.setKeyProperty(2); coil.setName("Coil"); coil.setAge(1); coil.setGender(0);// female coil.setHolder("Bay"); // 3.third animal : cat named coco Cat coco = new Cat(); coco.setKeyProperty(3); coco.setName("Coco"); coco.setAge(1); coco.setGender(1);// male coco.setHolder("Bay"); // 4.forth animal : bird named jojo Bird jojo = new Bird(); jojo.setKeyProperty(4); jojo.setName("Jojo"); jojo.setAge(1); jojo.setGender(0);// female jojo.setHolder("Bay"); // 5.fifth animal : bird name nono Bird nono = new Bird(); nono.setKeyProperty(5); nono.setName("Nono"); nono.setAge(1); nono.setGender(1);// male nono.setHolder("Bay"); List<Cat> cats = new ArrayList<Cat>(); cats.add(coil); cats.add(coco); List<Bird> birds = new ArrayList<Bird>(); birds.add(jojo); birds.add(nono); // entity assignment BayAnimal bayAnimal = new BayAnimal(); bayAnimal.setDog(circle); bayAnimal.setCats(cats); bayAnimal.setBirds(birds); return bayAnimal; }}
对象转换为XML格式报文核心代码
一定要记得导jar包,要不然一片红!jar包名字如下:”
xstream-1.3.1.jar
链接放最后,要者自取。
public class ObjectTransformXML { public static void main(String[] args) { BayAnimal bayAnimal = BayAnimalAssignMent.bayAnimalAssignment(); // declare xStream to transform XStream xs = new XStream(new DomDriver()); // use this method when you don't using annotations xs.alias("Bird", Bird.class); xs.alias("Cat", Cat.class); xs.alias("BayAnimal", BayAnimal.class); String requestXML = xs.toXML(bayAnimal); System.out.print(requestXML); bayAnimal = (BayAnimal) xs.fromXML(requestXML); }}
这个main方法实现了简单的将对象转换为XML和将XML转换为对象的功能:
1.首先,声明XStream对象时,需要在构造方法中传入参数new DOMDriver(),按照字面意思理解就是一个驱动,说来也奇怪,我不加这个参数的时候,可以将它转换为XML但是转换回对象的时候就会报错,报错如下:
Exception in thread “main” java.lang.IllegalArgumentException: XPP3 pull parser library not present. Specify another driver. For example: new XStream(new DomDriver())
很明显咯。人家都告诉你要怎么玩儿这个东西了,那就加上,有知道为什么的朋友请赐教~~~
2.其次,调用alias方法,很明显,根据字面意思不难理解,就是起别名,你的XML的所有节点,都是根据你这个alias(“别名”,类名.class),中的别名来的,当然,也可以不设置,但是除了一些子节点的属性是属性名之外,其他的涉及到对象的根节点,全部都为包名路径,有时候还会出现异常状况,根节点后面还会有refined=“”之类的,这种情况本人第一次使用这个的时候遇到过,但是重新开了个项目重新做了以后就再也没遇到过了。。。比较遗憾。。。。。
3.再来就是这两个方法了,好好记着吧,toXML();根据字面意思就可以看得出来,目标是XML,即实体转化为XML格式的方法;反之,fromXML();就是转回实体的方法。到此为止。
对象转换为JSON格式报文核心代码
一定要记得导jar包,要不然一片红!jar包名字如下:”
fastjson-1.1.24.jar
gson.jar
链接放最后,要者自取。
public class ObjectTransformJSON {public static void main(String [] args){ Gson gson = new Gson(); BayAnimalbayAnimal=BayAnimalAssignMent.bayAnimalAssignment(); String requestJson = JSON.toJSONString(bayAnimal); bayAnimal = gson.fromJson(requestJson, BayAnimal.class); System.out.println(requestJson)}}
1.首先呢,还是一样,默认赋值方法给实体赋值
2.其次,通过fastjson包中的 json对象调用tojsonString方法 很明显,tojsonString 就是转换成接送字符串的方法啦
3.最后,转换回实体的时候,本人太蠢,没有找到方法,但是之前在学校一直用的都是Gson包,这不,就用了Gson包中的fromJson方法,将字符串再次转换成为实体,ok 到此为止。
相关jar包下载请点击我 <( ̄3 ̄)>
还请各位多多指教,就这么多了~
- 关于java实体在xml报文和json报文之间的相互转换
- java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换
- java socket报文通信(三)java对象和xml格式文件的相互转换
- java socket报文通信(三)java对象和xml格式文件的相互转换
- java socket报文通信(三)java对象和xml格式文件的相互转换
- java socket报文通信(三)java对象和xml格式文件的相互转换
- xml报文与map之间的转换
- 实现实体类和json类之间的相互转换
- 关于Java对象和XML之间的相互转换
- Json字符串和Java实体类之间的相互转换(利用jackson实现)
- xml格式报文的拼装,和解析成实体类
- Xml和Json相互转换的java
- json/java对象/xml之间相互转换
- 有关json和xml报文的解析和构造
- 常用报文的解析与相互转换
- 关于Java集成json,返回json报文
- xml,json,对象 之间的相互转换
- Json、JavaBean、Xml之间的相互转换
- linux 远程登陆命令 telnet
- Android的Handler机制用法
- 姚虹波老师简介
- PHP多种序列化/反序列化的方法
- 图驴三维模型浏览器使用技巧
- 关于java实体在xml报文和json报文之间的相互转换
- 我们是否有未来?
- android初体验之页面跳转和数据传递
- Android中Selector的setSelected“方法不管用”
- 如何在Ubuntu 14.04之上安装Linux、Apache、MySQL与PHP(即LAMP)堆栈
- 单链表的逆置
- URI转换Utils
- PDO 解析
- maven的相关使用