在java中将xml转换为json

时间:2013-06-05 11:40:08

标签: java xml json

我想在java中从xml转换为json并获得输出。 但是这样做只是xml中的某些部分被转换而不是整个xml。 任何帮助 我输入的xml是:

<?xml version="1.0" encoding="UTF-8"?>
<important-data certified="true" processed="true">
    <timestamp>232423423423</timestamp>
        <authors>
            <author>
                <firstName>Tim</firstName>
                <lastName>Leary</lastName>
            </author>
        </authors>
        <title>Flashbacks</title>
        <shippingWeight>1.4 pounds</shippingWeight>
        <isbn>978-0874778700</isbn>
</important-data>

我的代码是: package com.discursive.answers;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;

import net.sf.json.JSON;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.json.XML;

public class ConvertXMLtoJSON {
public static int PRETTY_PRINT_INDENT_FACTOR = 4;
public static String TEST_XML_STRING = "<?xml version=\"1.0\" ?>" +
"<test attrib=\"moretest\">" +
"Turn this to JSON</test>";

public static void main(String[] args) {
    new ConvertXMLtoJSON();
}

public ConvertXMLtoJSON() {
    try {
        InputStream is = ConvertXMLtoJSON.class.getResourceAsStream("sample-xml.xml");
        if (is != null) {
            String xml = IOUtils.toString(is);
            JSON json = XMLSerializer.readObject(xml);

            System.out.println(json.toString().split(",").length);
            for(int i= 0 ;i < json.toString().split(",").length; i ++)
                System.out.println(json.toString().split(",")[i]);
        } else {
            System.out.println("Checkpoint 1");
        }
    } catch (java.io.IOException ioe) {
        ioe.printStackTrace();
    }
}

应用上面提到的xml和代码我得到输出:

{"timestamp":"232423423423"
"authors":"\n\t\t\n\t\t\tTim\n\t\t\tLeary\n\t\t\n\t"
"title":"Flashbacks"
"isbn":"978-0874778700"
"shippingWeight":"1.4 pounds"}

应该如下:

  { 
 "@certified": "true", 
 "@processed": "true", 
 "timestamp": "232423423423", 
 "authors": [  {   
 "firstName": "Tim",   
 "lastName": "Leary" 
 }], 
 "title":
 "Flashbacks", 
 "shippingWeight": "1.4 pounds", 
 "isbn": "978-0874778700"
}

我应该做哪些更改才能获得所需的输出?

1 个答案:

答案 0 :(得分:0)

文章How to Convert XML to JSON in Java使用json-lib提供与您相同的示例。

示例中的代码有效,因此可能需要检查libs上的版本。 json-lib网站列出了所需的库。

我设法让我在构建路径上使用以下库:

  • 公地BeanUtils的-1.8.3
  • 公地集合-3.2.1
  • 公地-IO-1.2
  • 公地琅-2.4
  • 共享记录-1.1.3
  • ezmorph-1.0.6
  • JS​​ON-lib2.4-jdk15
  • XOM-1.2.10