Quais são algumas boas ferramentas para a conversão rápida e fácil de XML para JSON em Java?
import net.sf.json.JSONObject;
ou import org.json.JSONObject;
. Também qual jar eu preciso incluir?
Quais são algumas boas ferramentas para a conversão rápida e fácil de XML para JSON em Java?
import net.sf.json.JSONObject;
ou import org.json.JSONObject;
. Também qual jar eu preciso incluir?
Respostas:
JSON em Java possui ótimos recursos.
Dependência do Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
é a classe que você está procurando:
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"
}}
import net.sf.json.JSONObject;
ou import org.json.JSONObject;
. Também qual jar eu preciso incluir?
<test attrib="moretest" content="foo">bar</test>
?
Para converter o arquivo XML em JSON, inclua a seguinte dependência
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
e você pode fazer o download do Jar no repositório Maven aqui . Em seguida, implemente como:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
O único problema com JSON em Java é que, se seu XML tiver um único filho, mas for uma matriz, ele será convertido em um objeto, em vez de uma matriz. Isso pode causar problemas se você sempre converter dinamicamente de XML para JSON, onde se seu exemplo de XML tiver apenas um elemento, você retornará um objeto, mas se tiver mais de 2, retornará uma matriz, o que pode causar problemas de análise para as pessoas que usam o método JSON.
A classe XML2JSON da Infoscoop tem uma maneira de marcar elementos que são matrizes antes de fazer a conversão, para que as matrizes possam ser mapeadas corretamente, mesmo se houver apenas um filho no XML.
Aqui está um exemplo de uso (em uma linguagem um pouco diferente, mas você também pode ver como as matrizes são usadas no método nodelist2json () do link XML2JSON).
<results><result><value>1</value></result></results>
, seria gerar { "results" : { "result" : { "value" : "1" } } }
ou { "results" : [ { "result" : { "value" : "1" } } ] }
Fiz upload do projeto que você pode abrir diretamente no eclipse e executar tudo https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Obrigado
Achei isso da maneira mais rápida e fácil: Usado: org.json.XML
class from 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());
}
Não sei qual é o seu problema exato, mas se você estiver recebendo XML e quiser retornar JSON (ou algo assim), também poderá ver o JAX-B. Esse é um padrão para organizar / desmarcar Java POJO para XML e / ou Json. Existem várias bibliotecas que implementam o JAX-B, por exemplo, o CXF do Apache.