O formato para troca de informações JSON Cada vez se tornou mais popular em detrimento do XML. Muitos serviços da Web continuam a trabalhar com XML, mas muitos outros já o fazem apenas com JSON. Podemos ver-nos na necessidade de XML convertido para JSON, especialmente em situações em que você quer se comunicar com JavaScript, onde a interpretação de uma cadeia JSON é muito mais fácil.
Uma maneira rápida é usar o JSON na biblioteca Java, usando o pacote org.json. Este pacote pode ser baixado no GitHub e adicioná-lo no classpath do projeto para ser capaz de fazer referência a ela, ou adicioná-lo como uma dependência Maven como segue:
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId></dependency>
Uma das funções interessantes deste pacote é responsável por converter do XML para o próprio JSON. Esta função é chamada XMLStringToJsonstring e recebe dois parâmetros. A primeira é uma string com a cadeia XML e a segunda é um inteiro com o fator de identificação, ou seja, o número de espaços com os quais cada nível de JSON resultante será identificado. O conteúdo desta função é o seguinte.
public static String xmlStringToJSONString(String xmlString, int indentFactor) {JSONObject xmlJSONObj = XML.toJSONObject(xmlString);String string = xmlJSONObj.toString(indentFactor);return string;}
Exemplo de como converter um XML para JSON
Em seguida, um exemplo simples de Uso desta função. Neste exemplo, o conteúdo do XML foi declarado em uma variável (xmlentrada) e é passada para a função responsável pela conversão, indicando quatro espaços de identificação. O resultado da conversão será exibida no console.
import org.json.JSONException;import org.junit.Test;public class Xml2JSONTests{public void testXml2JSON() throws Exception{String xmlEntrada = "<?xml version=\"1.0\" ?>" +"<serviceRequest><id>123</id><desc>Hola</desc></serviceRequest>"; try { System.out.println(xmlStringToJSONString(xmlEntrada, 4)); } catch (JSONException je) { System.out.println(je.toString()); }}}
Ao executar o código anterior, a saída do console seria a seguinte. Como pode ser visto, é um JSON válido, com quatro espaços de identificação em cada nível para facilitar sua leitura.
{"serviceRequest": { "id": 123, "desc": "Hola"}}