¿Qué pasa si tienes un <test attrib="moretest" content="foo">bar</test>?
wchargin
1
NOTA: org.json XML.toJSONObject () también convierte correctamente las listas xml en matrices json (a diferencia del jackson XmlMapper que, de forma predeterminada, se traga silenciosamente).
Agoston Horvath
58
Para convertir un archivo XML a JSON, incluya la siguiente dependencia
use la versión de json mencionada en la publicación si está en java 7 ya que la última versión arroja errores extraños.
urug
Si tiene un archivo dtd válido para el fragmento de código xml, puede convertir fácilmente xml a json y json a xml utilizando el jar de enlace de eclipse de código abierto. Puede encontrar un ejemplo detallado del proyecto JAVA aquí: cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html
Piyush Chordia
Tuve que copiar todo el paquete JSON a mi proyecto y renombrar el paquete. Agregar a gradle da advertencia de paquete duplicado de Android durante la compilación.
codelearner
28
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).
estamos usando una biblioteca "xml-to-json" en python y este es un problema semántico. Lo que hacemos para resolver este problema de "matriz u objeto" es escribir un método "tryConvertToArray ()", que devuelve una matriz con el único objeto. Por lo tanto, siempre puede confiar en que su valor sea una matriz
kommradHomer
No me queda claro cómo eso resuelve el problema. ¿Simplemente haces que todo sea una matriz en lugar de un objeto entonces? Por ejemplo, si tengo el XML <results><result><value>1</value></result></results>, ¿generaría { "results" : { "result" : { "value" : "1" } } } o { "results" : [ { "result" : { "value" : "1" } } ] }
Marcus
Hay algo que esperamos que sea una matriz. El problema surge cuando esta matriz tiene solo 1 elemento, por lo que es un objeto para el convertidor de xml a json. Entonces, como esperamos que sea una matriz incluso para un solo elemento, la verificamos y la convertimos en una matriz, asegurándonos de tener una matriz donde esperamos una matriz.
kommradHomer
Pero, ¿cómo espera que un elemento específico sea una matriz? XML2JSON etiqueta los elementos. No está claro cómo esperar que sea una matriz sin etiquetarla, ya que de lo contrario nunca se sabría con un solo elemento 'matriz'.
Marcus
Por ejemplo, hay un elemento llamado "números de teléfono". Y hay 1 o más elementos de "número de teléfono" en el elemento de "número de teléfono". Entonces, cuando solo hay un elemento de "número de teléfono" en "números de teléfono", xml2json crea un objeto de número de teléfono, pero yo creo una matriz de número de teléfono y pongo el objeto de número de teléfono en él.
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.
import net.sf.json.JSONObject;
oimport org.json.JSONObject;
. Además, ¿qué jar debo incluir?Respuestas:
JSON en Java tiene algunos recursos excelentes.
Dependencia de Maven:
XML.java
es la clase que estás buscando:Salida es:
fuente
import net.sf.json.JSONObject;
oimport 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
y puedes descargar Jar del repositorio de Maven aquí . Luego implemente como:
fuente
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).
fuente
<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
fuente
Encontré esto de la manera rápida y fácil: Usado:
org.json.XML
clase de java-json.jarfuente
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.
fuente