Forma mais rápida de converter XML para JSON em Java [fechado]

Quais são algumas boas ferramentas para converter rápida e facilmente XML para JSON em Java?

 133
Author: Benjamin, 2009-12-01

6 answers

JSON em Java tem grandes recursos.

Dependência de Maven:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20171018</version>
</dependency>

XML.java é a classe que procuras:

import org.json.JSONObject;
import org.json.XML;

public class Main {

    public static int PRETTY_PRINT_INDENT_FACTOR = 4;
    public static String TEST_XML_STRING =
        "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";

    public static void main(String[] args) {
        try {
            JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
            String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
            System.out.println(jsonPrettyPrintString);
        } catch (JSONException je) {
            System.out.println(je.toString());
        }
    }
}

A saída é:

{"test": {
    "attrib": "moretest",
    "content": "Turn this to JSON"
}}
 141
Author: danieltalsky, 2017-12-04 12:48:36

Para converter o ficheiro XML para JSON, inclua a seguinte dependência

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

E você pode Obter o Jar do repositório Maven aqui . Em seguida, implementar como:

String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
 49
Author: Krishna, 2015-06-16 19:52:36

O único problema com JSON em Java é que se o seu XML tem um único filho, mas é um array, irá convertê-lo para um objecto em vez de um array. Isso pode causar problemas se você sempre Converter dinamicamente de XML para JSON, onde se seu exemplo XML tem apenas um elemento, você retorna um objeto, mas se ele tem 2+, você retorna um array, o que pode causar problemas de processamento para as pessoas que usam o JSON.

A classe do Infoscoop XML2JSON tem uma forma de marcar elementos que são arrays antes de fazer a conversão, de modo que arrays podem ser mapeados corretamente, mesmo que haja apenas uma criança no XML.

Aqui está um exemplo de usá-lo (em uma linguagem ligeiramente diferente, mas você também pode ver como arrays é usado a partir do método nodelist2json() do link XML2JSON).

 25
Author: Marcus, 2013-02-22 01:41:05
Fiz o upload do projecto que podes abrir directamente no eclipse e correr. só isso. https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA

Obrigado

 3
Author: pareshm, 2014-07-10 06:26:28

Não sei qual é o teu problema exacto, mas se estás a receber XML e queres devolver o JSon (ou algo do género) também podes olhar para o JAX-B. Isto é um padrão para o 'marshalling' /desmarshalling ' do Java POJO para XML e/ou Json. Existem várias bibliotecas que implementam o JAX-B, por exemplo o CXF do Apache.

 2
Author: Martin Sturm, 2014-06-13 16:45:24
Achei isto rápido e fácil.: Used: org.json.Classe XML do java-json.jar
        if (statusCode == 200 && inputStream != null) {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
            StringBuilder responseStrBuilder = new StringBuilder();

            String inputStr;
            while ((inputStr = bufferedReader.readLine()) != null) {
                responseStrBuilder.append(inputStr);
            }

            jsonObject = XML.toJSONObject(responseStrBuilder.toString());
        }
 1
Author: horizon7, 2015-04-05 17:42:41