将json格式化字符串转换成xml格式,例如

json转xml(附案例)

怎么实现呢?经过度娘知道这里需要用到两个类: ObjectMapper、XStream

1.添加maven依赖

ObjectMapper依赖:

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-jaxrs</artifactId>
            <version>1.9.11</version>
        </dependency>

XStream依赖:

        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.10</version>
        </dependency>

2.创建json对应的javabean对象:

json转xml(附案例)

注意要添加get set方法

json转xml(附案例)

3.利用ObjectMapper类将json封装javabean对象中

String json="{\"message\": \"用户信息获取成功\",\"code\": \"1000\",\"data\": [{\"user_id\": \"454645646456\",\"username\": \"月忆秋思\",\"xfbUserType\":0,\"realname\":\"沈万三\",\"telephone\":\"99944454564\",\"tel400\":\"4765132345\",\"sex\":1,\"city\":\"city\",\"projname\":\"海上**\",\"newcode\":\"2313145646546\"}]}";

ObjectMapper mapper = new ObjectMapper();

PassportNamesRes resultInfo = mapper.readValue(json, PassportNamesRes.class);

4.将javabean对象转成xml

XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));

System.out.println(xStream.toXML(resultInfo));

5.输出:

json转xml(附案例)

这里已经实现了json到xml转换,但是输出发现不是我们想要的格式,别急,我整理了一下我遇到的问题:

1.将最外层根节点替换成 root:

xStream.alias("root", resultInfo.getClass());

输出:

json转xml(附案例)

2.将list中子节点名字替换成one:

xStream.alias("one", passortInfo.class);

输出:

json转xml(附案例)

3.添加xml消息头

可以使用Stringbuffer进行拼接:

StringBuffer buff=new StringBuffer();

buff.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");

buff.append("\r\n"+xStream.toXML(resultInfo));

System.out.println(buff);

控制台打印:

json转xml(附案例)

其他的问题遇到了再记录吧.

相关文章: