【问题标题】:How to convert xml to .json file in java如何在java中将xml转换为.json文件
【发布时间】:2013-08-23 08:45:11
【问题描述】:
  public class ConvertXMLtoJSON {

    public static void main(String[] args) throws Exception {
        InputStream in =             ConvertXMLtoJSON.class.getResourceAsStream("D:\\sample.xml");
        String xml = IOUtils.toString(in);
        XMLSerializer xmlSerializer = new XMLSerializer(); 
        JSON json = xmlSerializer.read(xml);  
        System.out.println(json.toString(2));
    }
      }

但我遇到了错误

      Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1020)
at org.apache.commons.io.IOUtils.toString(IOUtils.java:358)
at com.apache.poi.ConvertXMLtoJSON.main(ConvertXMLtoJSON.java:13

你能帮我解决它吗 这是我的xml格式 ac3 AC3 电话 ACME 电话 200.0 1.0 真的

我已经从我的 excel 文件中生成了这个 xml,并且我已经将这个 xml 文件转换为 json 文件

【问题讨论】:

  • 您使用的是什么库/-ies?兴趣点?输入什么样的XML,输出什么样的JSON?没有更多信息的问题太模糊了。
  • 嗨,Durga,您能否选择解决您的问题的正确答案,或者如果您自己解决了这个问题,请添加您的答案?我也遇到了同样的错误,没有找到这里给出的答案对我的案例有用。

标签: java xml json


【解决方案1】:

您正在尝试将物理 File 读取为类路径 Resource,这是错误

InputStream in = ConvertXMLtoJSON.class.getResourceAsStream("D:\\sample.xml");

改成

InputStream in =  new FileInputStream(new File("D:\\sample.xml"));

【讨论】:

  • 感谢您的帮助,我得到了解决方案,我的文件正在转换为 .json
【解决方案2】:
String xml = IOUtils.toString(in);

这里 InputStream in 为空,因此它引发 NullPointerException

Class#getResourceAsStream(String name) 用于从类路径加载资源,通常用于基于 Web 的项目中,并使用此算法从给定的资源名称构造绝对资源名称:

  1. 如果名称以 '/' ('\u002f') 开头,则绝对名称 资源是名称中“/”之后的部分。
  2. 否则,绝对名称的格式如下: modified_pa​​ckage_name/name

作为Documentation

由于您的文件存在于本地硬盘中(D:\\sample.xml),最好使用FileInputStream 来加载资源。

InputStream in =  new FileInputStream("D:\\sample.xml");

找到一个很好的相关问题 -

【讨论】:

  • 谢谢。我已经找到解决方案了
【解决方案3】:

这是用于将xml转换为json的代码

 import org.json.JSONObject;
 import org.json.JSONException;
 import org.json.XML;
 import java.io.*;


 public class ConvertXMLtoJSON2{  
      public static void main(String[] args) throws Exception {  
        String fileName = "D:\\temp.json";
        try {           
            File file = new File ("D:\\output333.xml");  
            InputStream inputStream = new FileInputStream(file);  
            StringBuilder builder =  new StringBuilder();  
            int ptr = 0;  
            while ((ptr = inputStream.read()) != -1 ) {  
                builder.append((char) ptr); 
              //  System.out.println(ptr);
            }  

            String xml  = builder.toString();  
            JSONObject jsonObj = XML.toJSONObject(xml);   
            // System.out.println(jsonObj.toString()); 
            // System.out.println(jsonObj.toString().split(",").length);
            // Assume default encoding.
            FileWriter fileWriter =
                new FileWriter(fileName);

            // Always wrap FileWriter in BufferedWriter.
            BufferedWriter bufferedWriter =
                new BufferedWriter(fileWriter);

            // Always close files.

            for(int i= 0 ;i < jsonObj.toString().split(",").length; i ++) {
               System.out.println(jsonObj.toString().split(",")[i]);
               bufferedWriter.write(jsonObj.toString().split(",")[i]);
               bufferedWriter.write("\n");
            }

            bufferedWriter.close();
        }


            /* 
            String xmlString  = "<?xml version=\"1.0\"?><ASF_Service_ResponseVO id=\"1\"><service type=\"String\">OnboardingV2</service><operation type=\"String\">start_onboarding_session</operation><requested_version type=\"String\">1.0</requested_version><actual_version type=\"String\">1.0</actual_version><server_info type=\"String\">onboardingv2serv:start_onboarding_session&CalThreadId=85&TopLevelTxnStartTime=13b40fe91c4&Host=L-BLR-00438534&pid=3564</server_info><result type=\"Onboarding::StartOnboardingSessionResponse\" id=\"2\"><onboarding_id type=\"String\">137</onboarding_id><success type=\"bool\">true</success></result></ASF_Service_ResponseVO>"; 

            JSONObject jsonObj = XML.toJSONObject(xmlString);  
            System.out.println(jsonObj.toString());  
            */
          catch(IOException ex) {
                System.out.println(
                    "Error writing to file '"
                    + fileName + "'");
                // Or we could just do this:
                // ex.printStackTrace();
            } catch(Exception e) {  
                e.printStackTrace();  
            }
    }  
}

【讨论】:

    【解决方案4】:

    试试下面的代码:

    import org.json.JSONObject;
    import org.json.XML;
    import java.io.*;
    
    public class ConverterXMLToJSON {
        public static int PRETTY_FACTOR=4;
        public static void main(String[] args) throws Exception {
            String jsonFileName = "src\\main\\resources\\Light.json";
            try {
                File xmlFile = new File("src\\main\\resources\\Light.xml");
                InputStream inputStream = new FileInputStream(xmlFile);
                StringBuilder builder = new StringBuilder();
                int ptr;
                while ((ptr = inputStream.read()) != -1) {
                    builder.append((char) ptr);
                }
    
                String xml = builder.toString();
                JSONObject jsonObj = XML.toJSONObject(xml);
                System.out.print(jsonObj);
                FileWriter fileWriter =
                        new FileWriter(jsonFileName);
    
                // Always wrap FileWriter in BufferedWriter.
                BufferedWriter bufferedWriter =
                        new BufferedWriter(fileWriter);
                bufferedWriter.write(jsonObj.toString(PRETTY_FACTOR));
                bufferedWriter.close();
            } catch (IOException ex) {
                System.out.println(
                        "Error writing to file '"
                                + jsonFileName + "'");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    【讨论】:

      【解决方案5】:

      Underscore-java 库可以将 xml 转换为 json。 Live example

      import com.github.underscore.U;
      
      public class JsonConversion {
          public static void main(String args[]) {
              String xmlString  = "<?xml version=\"1.0\"?><ASF_Service_ResponseVO id=\"1\"><service type=\"String\">OnboardingV2</service>"
              + "<operation type=\"String\">start_onboarding_session</operation><requested_version type=\"String\">1.0</requested_version>"
              + "<actual_version type=\"String\">1.0</actual_version><server_info type=\"String\">onboardingv2serv:start_onboarding_session"
              + "&amp;CalThreadId=85&amp;TopLevelTxnStartTime=13b40fe91c4&amp;Host=L-BLR-00438534&amp;pid=3564</server_info><result type="
              + "\"Onboarding::StartOnboardingSessionResponse\" id=\"2\"><onboarding_id type=\"String\">137</onboarding_id><success type="
              + "\"bool\">true</success></result></ASF_Service_ResponseVO>"; 
      
              String json = U.xmlToJson(xmlString);  
              System.out.println(json);  
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-11
        • 2014-10-26
        • 2013-11-27
        • 2013-06-01
        • 1970-01-01
        • 2015-06-04
        • 1970-01-01
        相关资源
        最近更新 更多