文章目录
- 场景
- 方案
- xstream例子
- maven依赖
- java代码
- 其他
- xstream官网文档地址
- 比较难处理的场景
- maven依赖
场景
回传报文,原来是xml格式的,后来有业务系统强制要求接受json。
那么两种都要兼容,所以需要xml转json。
方案
常规的dom api去解析。 这个肯定是可以实现的,但是比较麻烦。
自己写个xml转json的类,相对还好控制。
几经周折,发现xstream看起来比较简单。
xstream是比较强大的,既支持java代码拼接,也支持注解。还支持自定义转换器。
xstream例子
maven依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.4</version>
</dependency>
java代码
主代码:
XStream xstream = new XStream();
xstream.processAnnotations(Entity.class);
Object o = xstream.fromXML(xml);
String json = JSON.toJSONString(o);
主体类代码:
@XStreamAlias("request")
@Data
public class Entity {
@XStreamAsAttribute()
private String userAccount;
@XStreamAsAttribute()
private String password;
@XStreamImplicit(itemFieldName="hmlst") // 这个是list
private List<HmEntity> hmlst;
}
子实体类代码:
@Data
public class HmEntity {
@XStreamAsAttribute
private String fpqqlsh;
}
其他
xstream官网文档地址
http://x-stream.github.io/tutorial.html
比较难处理的场景
类似这样的报文用注解怎么也弄不对。
如果实在不行,用json实体类来实现,生成正确的json报文即可。
<request>
<lst>
<user><name>zhangsan</name></user>
<user><name>zhangsan</name></user>
</lst>
</request>
maven依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.4</version>
</dependency>