'Convert XML to JSON object in Android
I have an XML string as shown below:
<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>
Is it possible to convert XML to JSON?
Solution 1:[1]
You can try this way as well. I have tried and tested it myself.
Step 1 : Please Download the java-json.jar
Step 2: Add this to /libs
folder of your project then add to build path.
Step 3: Then use it as follows
Imports to look for
import org.json.JSONException; import org.json.JSONObject; import org.json.XML;
Sample string
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());
Output:
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"}}
Solution 2:[2]
I just released a "XML to JSON" Library for Android Studio. It is easy to integrate with gradle, simple to use, and configurable.
XmlToJson is available on GitHub:
https://github.com/smart-fun/XmlToJson
enjoy!
Solution 3:[3]
I would suggest you to use json-lib
, a library which adds JSON support to any Java program
. json-lib can take XML and convert it into a JSON object.
You can get json-lib here
Eg.
String xml = "your xml string";
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read( xml );
Solution 4:[4]
Underscore-java has static method U.xmlToJson(xml)
. Live example
import com.github.underscore.U;
public class Main {
public static void main(String[] args) {
String xml = "<s:Envelope \n"
+ "xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"><s:Body><Response \n"
+ "xmlns=\"http://tempuri.org/\"><UserResult><Users xmlns=\"\"><User>\n"
+ "<Message>Success</Message>\n"
+ "<UserId>213213213</UserId>\n"
+ "<FullName>Abc</FullName>\n"
+ "<Roles>\n"
+ "<Role>\n"
+ "<RoleId>23232333</RoleId>\n"
+ "<RoleName>Salesperson</RoleName>\n"
+ "</Role>\n"
+ "</Roles>\n"
+ "</User>\n"
+ "</Users>\n"
+ "</UserResult></Response>\n"
+ "</s:Body>\n"
+ "</s:Envelope>";
System.out.println(U.xmlToJson(xml));
}
}
Output:
{
"s:Envelope": {
"-xmlns:s": "http://schemas.xmlsoap.org/soap/envelope/",
"s:Body": {
"Response": {
"-xmlns": "http://tempuri.org/",
"UserResult": {
"Users": {
"-xmlns": "",
"User": {
"Message": "Success",
"UserId": "213213213",
"FullName": "Abc",
"Roles": {
"Role": {
"RoleId": "23232333",
"RoleName": "Salesperson"
}
}
}
}
}
}
}
},
"#omit-xml-declaration": "yes"
}
Solution 5:[5]
You can convert xml to jackson objects, and then can use jackson json.
I have attempted to add XmlPull support to jackson xml. Find the forked project here:
https://github.com/finvu/jackson-dataformat-xml
Currently, only supported for version 2.9.6. (clone the branch jackson-dataformat-xml-2.9.6-XmlPull)
Sorry, I am not able to provide detailed documentation due to time constraints. If you have knowledge of git and maven to pull a specific branch and build the jar, then it should be relatively easy.
Jackson xml documentation can be found on the jackson xml git home page here:
https://github.com/finvu/jackson-dataformat-xml/tree/jackson-dataformat-xml-2.9.6-XmlPull
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | CRUSADER |
Solution 2 | Arnaud SmartFun |
Solution 3 | |
Solution 4 | |
Solution 5 | praveenp |