在Android中将XML转换为JSON对象

时间:2013-08-20 14:17:49

标签: android xml json libraries

我有一个XML字符串,如下所示:

<s:Envelope 
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><Response 
xmlns="http://tempuri.org/"><UserResult><Users xmlns=""><User>
<Message>Success</Message>
<UserId>213213213</UserId>
<FullName>Abc</FullName>
<Roles>
<Role>
<RoleId>23232333</RoleId>
<RoleName>Salesperson</RoleName>
</Role>
</Roles>
</User>
</Users>
</UserResult></Response>
</s:Body>
</s:Envelope>

是否可以将XML转换为JSON?

5 个答案:

答案 0 :(得分:65)

您也可以尝试这种方式。我自己试过并测试了它。

第1步:请下载java-json.jar

步骤2:将其添加到项目的/libs文件夹,然后添加到构建路径。

步骤3:然后按如下方式使用

  • 导入寻找

    import org.json.JSONException;
    import org.json.JSONObject;
    import org.json.XML;
    
  • 示例字符串

    String sampleXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
        + "<mobilegate>"    
    +"<timestamp>232423423423</timestamp>"                          
    + "<txn>" + "Transaction" + "</txn>" 
    + "<amt>" + 0 + "</amt>" 
    + "</mobilegate>"; 
    
  • Json String

    JSONObject jsonObj = null;
    try {
        jsonObj = XML.toJSONObject(sampleXml);
    } catch (JSONException e) {
        Log.e("JSON exception", e.getMessage());
        e.printStackTrace();
    } 
    
    Log.d("XML", sampleXml);
    
    Log.d("JSON", jsonObj.toString());
    

<强>输出:

XML:

<?xml version="1.0" encoding="utf-8"?><mobilegate><timestamp>232423423423</timestamp><txn>Transaction</txn><amt>0</amt></mobilegate>

JSON:

{"mobilegate":{"timestamp":232423423423,"amt":0,"txn":"Transaction"}}

答案 1 :(得分:6)

我刚刚发布了一个&#34; XML到JSON&#34;适用于Android Studio的库。 它易于与gradle集成,易于使用和可配置。

XmlToJson 可在GitHub上找到:

https://github.com/smart-fun/XmlToJson

享受!

答案 2 :(得分:2)

我建议您使用json-lib,这是一个添加JSON support to any Java program的库。 json-lib可以获取XML并将其转换为JSON对象。

你可以获得json-lib here

例如

String xml = "your xml string";                
XMLSerializer xmlSerializer = new XMLSerializer(); 
JSON json = xmlSerializer.read( xml );

答案 3 :(得分:0)

Underscore-java具有静态方法U.xmlToJson(xml)。我是该项目的维护者。 Live example

import com.github.underscore.lodash.U;

U.xmlToJson("<a>\n  <b></b>\n  <b></b>\n</a>");

答案 4 :(得分:0)

您可以将xml转换为杰克逊对象,然后可以使用杰克逊json。

我试图将XmlPull支持添加到jackson xml。在此处找到分叉的项目:

https://github.com/finvu/jackson-dataformat-xml

当前,仅支持版本2.9.6。 (克隆分支jackson-dataformat-xml-2.9.6-XmlPull)

抱歉,由于时间限制,我无法提供详细的文档。如果您了解git和maven来拉特定分支并构建jar,那么它应该相对容易。

可在以下位置的jackson xml git主页上找到Jackson xml文档:

https://github.com/finvu/jackson-dataformat-xml/tree/jackson-dataformat-xml-2.9.6-XmlPull