【问题标题】:XML to JSON conversion: empty array instead of empty stringXML 到 JSON 的转换:空数组而不是空字符串
【发布时间】:2016-10-17 17:13:43
【问题描述】:

我正在使用库 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": ""
    }]
}

谁能帮忙?

【问题讨论】:

    标签: java json xml


    【解决方案1】:

    为什么需要 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));
    }
    

    【讨论】:

      【解决方案2】:

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

      Traverse all the Nodes of a JSON Object Tree with JavaScript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-21
        • 2012-07-30
        • 2017-05-04
        • 1970-01-01
        • 2015-11-16
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        相关资源
        最近更新 更多