zoukankan      html  css  js  c++  java
  • Java中将xml文件转化为json的两种方式

    原文地址https://blog.csdn.net/a532672728/article/details/76312475

    最近有个需求,要将xml转json之后存储在redis中,找来找去发现整体来说有两种方法,使用json-lib包中的net.sf.json或者使用org.json,这里将两种方式的实现代码写下来记录一下,以后方便拿来直接用了,省的来回找了。

      第一种方式json-lib,这种方式需要的依赖包比较多,具体需要以下jar包这个从网上下载既可以了或者是利用Maven指定好依赖即可
      这里写图片描述

      实现代码具体见下
      

    复制代码
    public class Test {
    public static void ConvertXMLtoJSON() {

            InputStream is = Test.class.getResourceAsStream("student.xml");   
            String xml;    
            try {    
                xml = IOUtils.toString(is);    
                System.out.println(xml);    
                XMLSerializer xmlSerializer = new XMLSerializer(); 
                JSON json = xmlSerializer.read(xml);
                System.out.println(json);    
                System.out.println(json.toString(0));    
            } catch (IOException e) {    
                e.printStackTrace();    
            }    
        } 
      public static void main(String[] args) {
        Test.ConvertXMLtoJSON();
    }
    

    }
    复制代码

      简单解释下该代码,
      1 这里通过Class的getResourceAsStream方法获得指定文件的输入流,这里指定参数没有带/,表示Test类与xml文件在同一级目录下,如果有/那么是从根目录进行获取的,
      2 之后利用IOUtils的toString方法将该输入流转化为xml格式的字符串输出,调用XMLSerializer的read方法接受xml格式的字符串,将其转化为JSON对象
      3 这里实际上输出json对象和调用json对象的toString方法输出的形式在控制台展示的是一样的
      这里随便写了一个xml文件
      

    man 18

    对应的输出的json

    {"@name":"zhangsan","sex":"man","age":"18"}

      这里只需要给出一个符合标准格式的xml文件即可,十分方便,如果是一个标签的属性那么会加上前缀@符号

      
      另外一种方式是使用org.json来实现,这种方式更简单,只需要两个jar包即可,下载地址http://mvnrepository.com/artifact/org.json/json,随便下载一个使用比较多的jar包版本即可,具体实现代码见下
      

    复制代码
    public class JsonUtils {
    public static String xml2jsonString() throws JSONException, IOException {
    InputStream in = JsonUtils.class.getResourceAsStream("student.xml");
    String xml = IOUtils.toString(in);
    JSONObject xmlJSONObj = XML.toJSONObject(xml);
    return xmlJSONObj.toString();
    }

    public static void main(String[] args) throws JSONException, IOException {
    
        String string = xml2jsonString();
        System.out.println(string);
    
    }
    

    }
    复制代码

      简单对比一下使用json-lib的实现方式,前面的代码基本一致,区别是这里使用的是org.json.XML类,调用的是toJSONObject方法,接受的是一个xml格式的字符串,生成一个JSONObject对象,这里也是一样,调不调用jsonobject的toString方法输出效果都一样,xml文件内容一样,输出的格式见下
      

    {"student":{"sex":"man","name":"zhangsan"}}

      最后总结一下:
      1 json-lib依赖的jar包很多,需要全部集齐,org.json仅仅需要两个jar包即可实现,一个org.json另一个是commons-io
      2 两者输出的xml格式不同,前者不带根标签需要手动添加,会区别标签的属性和子标签,后者带有根标签,标签的属性和子标签不会区分对待,因此根据自己的实际情况自行选择修改即可。
      PS:如果还有其他的更好的xml转json方式,希望各位大神能告诉一下,再次先谢过了,那么这篇到此结束先了

  • 相关阅读:
    UVa 1151 Buy or Build【最小生成树】
    UVa 216 Getting in Line【枚举排列】
    UVa 729 The Hamming Distance Problem【枚举排列】
    HDU 5214 Movie【贪心】
    HDU 5223 GCD
    POJ 1144 Network【割顶】
    UVa 11025 The broken pedometer【枚举子集】
    HDU 2515 Yanghee 的算术【找规律】
    Java基本语法
    Java环境变量,jdk和jre的区别,面向对象语言编程
  • 原文地址:https://www.cnblogs.com/javalinux/p/14021005.html
Copyright © 2011-2022 走看看