zoukankan      html  css  js  c++  java
  • xml转json和实体类的两种方式

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

      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 void main(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 = new XMLSerializer();
            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 class User {
    
        @XStreamAlias("name")
        private String name;
        @XStreamAlias("age")
        private String age;
        @XStreamAlias("SEX")
        private String sex;
        public User(String name, String age, String sex) {
            super();
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
        }
    }

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

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

    2.将实体类转xml的方式

         User user = new User();
            user.setName("test");
            // 转换
            XStream xStream = new XStream();
            // 通过注解方式的,一定要有这句话
            xStream.processAnnotations(user.getClass());
            String xmlCfg = xStream.toXML(user);
  • 相关阅读:
    MySQL/MariaDB数据库的各种日志管理
    MySQL/MariaDB数据库的事务和隔离级别
    MySQL/MariaDB数据库的并发控制
    MySQL/MariaDB数据库的索引工作原理和优化
    MySQL/MariaDB数据库的查询缓存优化
    安卓(Android)开发基础知识
    typora快捷键
    理解ECS的概念和Unity中的ECS设计
    UGUI合批原理笔记
    SourceTree下载bitbucket代码
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/10665414.html
Copyright © 2011-2022 走看看