XML到JSON的转换:空数组而不是空字符串

时间:2016-06-16 09:17:59

标签: java json xml

我正在使用库net.sf.json将XML转换为JSON。 这是我写的代码:

FileInputStream fis = new FileInputStream("C:\\Desktop\\TestXML.xml");

XMLSerializer xmlSerializer = new XMLSerializer();

JSON json = xmlSerializer.readFromStream(fis);

JSONArray jsonArray = new JSONArray();
jsonArray.add(json);

JSONObject root = new JSONObject();
root.element("WSJson", jsonArray);

我注意到如果XML包含空标记,它们将在空数组中转换。

示例:给出此xml

<WSJson>
    <Tipo_Operazione>I</Tipo_Operazione>
    <Codice_Prestazione>SW1</Codice_Prestazione>
    <Codice_Intervento></Codice_Intervento>
    <Nome/>
</WSJson>

输出

{
    "WSJson": [{
        "Tipo_Operazione": "I",
        "Codice_Prestazione": "SW1",
        "Codice_Intervento": [],
        "Nome": []
    }]
}

相反,我想

{
    "WSJson": [{
        "Tipo_Operazione": "I",
        "Codice_Prestazione": "SW1",
        "Codice_Intervento": "",
        "Nome": ""
    }]
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

遍历JSON对象以便用空字符串替换空数组有什么问题?这里解释了如何做到这一点:

Traverse all the Nodes of a JSON Object Tree with JavaScript

答案 1 :(得分:0)

为什么需要XMLSerialiser来读取文件,而是可以使用FileReader和XML.toJSONObject()将XML字符串转换为JsonObject?

public static void main(String[] args) throws FileNotFoundException, IOException {
    String xml = null;
    try(BufferedReader reader = new BufferedReader(new FileReader("C:\\Desktop\\TestXML.xml")))  {
        String readLine =null;
        while((readLine = reader.readLine()) != null)  {
            xml += readLine; 
        }
    }
    JSONObject jsonObject = XML.toJSONObject(xml);
    System.out.println(jsonObject.toString(1));
}