¿Cuáles son algunas buenas herramientas para convertir rápida y fácilmente XML a JSON en Java?
import net.sf.json.JSONObject;
o import org.json.JSONObject;
. Además, ¿qué jar debo incluir?
¿Cuáles son algunas buenas herramientas para convertir rápida y fácilmente XML a JSON en Java?
import net.sf.json.JSONObject;
o import org.json.JSONObject;
. Además, ¿qué jar debo incluir?
Respuestas:
JSON en Java tiene algunos recursos excelentes.
Dependencia de Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
es la clase que estás buscando:
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());
}
}
}
Salida es:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
o import org.json.JSONObject;
. Además, ¿qué jar debo incluir?
<test attrib="moretest" content="foo">bar</test>
?
Para convertir un archivo XML a JSON, incluya la siguiente dependencia
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
y puedes descargar Jar del repositorio de Maven aquí . Luego implemente como:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
El único problema con JSON en Java es que si su XML tiene un solo hijo, pero es una matriz, lo convertirá en un objeto en lugar de una matriz. Esto puede causar problemas si siempre convierte dinámicamente de XML a JSON, donde si su XML de ejemplo solo tiene un elemento, devuelve un objeto, pero si tiene 2+, devuelve una matriz, lo que puede causar problemas de análisis para las personas que usan JSON
La clase XML2JSON de Infoscoop tiene una forma de etiquetar elementos que son matrices antes de realizar la conversión, de modo que las matrices se pueden asignar correctamente, incluso si solo hay un hijo en el XML.
Aquí hay un ejemplo de su uso (en un lenguaje ligeramente diferente, pero también puede ver cómo se usan las matrices desde el método nodelist2json () del enlace XML2JSON).
<results><result><value>1</value></result></results>
, ¿generaría { "results" : { "result" : { "value" : "1" } } }
o { "results" : [ { "result" : { "value" : "1" } } ] }
He subido el proyecto que puede abrir directamente en eclipse y ejecutar eso es todo https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Gracias
Encontré esto de la manera rápida y fácil: Usado: org.json.XML
clase de 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());
}
No sé cuál es su problema exacto, pero si está recibiendo XML y desea devolver JSON (o algo así) también podría mirar JAX-B. Este es un estándar para ordenar / desmantelar POJO de Java a XML y / o Json. Existen múltiples bibliotecas que implementan JAX-B, por ejemplo, CXF de Apache.