文章目录
- 场景
- 方案
- 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") // 这个是listprivate List<HmEntity> hmlst;
}
子实体类代码:
@Data
public class HmEntity {@XStreamAsAttributeprivate 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>