xml转json和实体类的两种方式

摘要:
它的调用方式也非常简单:从xml对象到java对象,使用fromXML()方法;将java对象序列化为xml、toXML()是很方便的。Xstream还支持注释方法。注释方法实现与非注释方法实现的区别在于是否单独解析别名。如果是annotation方法,则可以直接使用annotation属性将xml字段映射到实体类字段。

本文为博主原创,未经允许不得转载:

xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛,

在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法:

一. 使用XMLSerializer 将xml转为json格式

1.引入jar包:

<dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <classifier>jdk15</classifier>
        </dependency>

使用示例:

public static voidmain(String[] args) {
        String xml = "<?xml version="1.0" encoding="UTF-8"?>"
                +"<domain xmlns:cloudcdn="http://cloud.chinanetcenter.com/extension/xhtml">"
                + "<domain-id>fdg68</domain-id>"
                + "<domain-name>dfsg.com</domain-name>"
                + "<service-type>web-https</service-type>"
                + "<service-areas/>"
                + "<cname>fdsgsdg.com</cname>"
                + "<status>Deployed</status>"
                + "<comment/>"
                + "</domain>"
                ;
          XMLSerializer cacheXmlSerializer = newXMLSerializer();
        JSON referJsonResult =cacheXmlSerializer.read(xml);
        JSONObject referJson =JSONObject.parseObject(referJsonResult.toString());
        System.out.println(referJson);
//运行打印的结果为:
//{"domain-name":"dfsg.com","domain-id":"fdg68","service-type":"web-https","cname":"fdsgsdg.com","@xmlns:cloudcdn":"http://cloud.chinanetcenter.com/extension/xhtml","comment":[],"service-areas":[],"status":"Deployed"} }

二.通过XStream将xml转化为实体类,

通过第一种方式也可以将xml解析为实体类,步骤为,先将xml转为json,然后将json转为实体类,

这里介绍的方式是通过XStream将xml转为实体类:

XStream是个很强大的工具,能将java对象和xml之间相互转化。xstream不在意java类中成员变量是私有还是公有,

也不在乎是否有默认构造函数。它调用方式也非常简单:从xml对象转化为java对象,使用fromXML()方法;

从java对象序列化为xml,toXML()即可,很方便。

xstream也支持注解方式,注解方式实现和非注解方式实现的区别在于是否单独解析别名,

如果是注解的方式,可以直接使用注解的属性将xml字段与实体类字段进行映射。

具体可参考:https://blog.csdn.net/dc282614966/article/details/80970750

此处展示注解式转换的实例:

@XStreamAlias("message") 别名注解 ,作用就是将属性按照别名输出。

@XStreamAlias("User")
public classUser {
    @XStreamAlias("name")
    privateString name;
    @XStreamAlias("age")
    privateString age;
    @XStreamAlias("SEX")
    privateString sex;
    publicUser(String name, String age, String sex) {
        super();
        this.name =name;
        this.age =age;
        this.sex =sex;
    }
    @Override
    publicString toString() {
        return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }
}

1.xml转换实体类的实现方式:

public static voidmain(String[] args) {
        String xml="<User>
"
                +" <name>peter</name> 
"
                +"  <age>13</age> 
"
                +"  <SEX>男</SEX> 
"
                +" </User>";
         XStreamEx xStream = newXStreamEx();
         xStream.processAnnotations(User.class);
         User user =(User) xStream.fromXML(xml);
    }

2.将实体类转xml的方式

     User user = newUser();
        user.setName("test");
        //转换
        XStream xStream = newXStream();
        //通过注解方式的,一定要有这句话
xStream.processAnnotations(user.getClass());
        String xmlCfg = xStream.toXML(user);

免责声明:文章转载自《xml转json和实体类的两种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PostgreSQL数据库中的常见错误1、MD /MDD /ML /MT /MTD的简单介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#连接SQLServer数据库

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingSystem.Data; usingSystem.Data.Sql; usingSystem.Data.SqlClient;...

Dev控件常用属性【转载】

1、 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2、 如何新增一条记录 (1)、gridView.AddNewRow() (2)、实现 gridView_InitNewRow 事件 3、如何解决 GridControl 记录能获取而没有显示出来的问题 grid...

Java里import语句使用

文件一: package com.xuexi;//在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。// import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。public class Import { String name; int age; Stri...

文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

前言: 上一篇比较详细的介绍了卡方检验和卡方分布。这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行。然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样就完美了。 目录:  文本分类学习(一)开篇  文本分类学习(二)文本表示  文本分类学习(三)特征权重(TF/IDF)和特征提取           ...

Spring Boot中微信全局token的缓存实现

  为什么要缓存token? 这里的token指的是微信JSAPI中基础支持的ACCESS_TOKEN,并非网页授权ACCESS_TOKEN。网页授权Token每天的调用次数没有限制,不需要缓存。 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 获取用户基本信息 5...

Unity3D常用网络框架与实战解析 学习

Socket 1 usingSystem; 2 usingSystem.Collections.Generic; 3 usingSystem.Net; 4 usingSystem.Net.Sockets; 5 usingSystem.Text; 6 7 8 namespaceSocket服务端 { 9 classProgram { 10...