Implementación de Java de la conversión de JSON a XML

¿Hay JAR disponibles para convertir de JSON a XML?

No es una aplicación Java, sino una implementación pura de XSLT 2.0 :

Eche un vistazo al documento f:json-document() de la biblioteca FXSL 2.x.

Usando esta función es extremadamente fácil incorporar JSon y usarlo como … XML.

Por ejemplo, uno puede simplemente escribir la siguiente expresión XPath:

 f:json-document($vstrParam)/Students/*[sex = 'Female'] 

y obtener todos los hijos de Students con sex = 'Female'

Aquí está el ejemplo completo:

     { "teacher":{ "name": "Mr Borat", "age": "35", "Nationality": "Kazakhstan" }, "Class":{ "Semester": "Summer", "Room": null, "Subject": "Politics", "Notes": "We're happy, you happy?" }, "Students": { "Smith": {"First Name":"Mary","sex":"Female"}, "Brown": {"First Name":"John","sex":"Male"}, "Jackson": {"First Name":"Jackie","sex":"Female"} } , "Grades": { "Test": [ {"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15}, {"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55}, {"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65} ] } }      

Cuando se aplica la transformación anterior en cualquier documento XML (ignorado), se produce el resultado correcto :

  Mary Female   Jackie Female  

Puede crear un JSONObject y luego convertirlo a XML usando la clase XML en el espacio de nombres org.json

Envolver la cadena json en el objeto es tan fácil como pasarlo en su constructor

 JSONObject o = new JSONObject(jsonString); 

Luego puede obtenerlo en formato XML utilizando la clase XML, de esta forma:

 String xml = org.json.XML.toString(o); 

Una posibilidad más: Jettison, http://jettison.codehaus.org puede exponer a Json a través de la interfaz de análisis XML (stax XMLStreamReader), que permite la integración con sistemas que solo entienden XML. Requiere el uso de una convención (pez tejón, o como se llame el otro).

XStream, por ejemplo, usa Jettison (o al menos la convención de Badgerfish) para permitir el uso de JSON.

Pero la pregunta en sí misma es un tanto vaga: mientras que siempre se puede convertir de uno a otro (es algo muy trivial de hacer realmente), XML y JSON no son equivalentes: no hay un mapeo genérico sin pérdidas de uno a uno. Por lo tanto, la pregunta es: ¿qué piensas hacer con los resultados? ¿Cómo se utilizará el xml resultante?

http://json-lib.sourceforge.net/

  • los puntos anteriores acerca de la cartografía one-one completamente infalible son válidos, pero he tenido una buena experiencia al convertir xml a json utilizando la biblioteca anterior.

Es posible que desee probar XStream. Eche un vistazo a http://x-stream.github.io/faq.html#JSON .

Puede probar https://github.com/lukas-krecan/json2xml que proporciona conversión JSON a XML simple. Toma el analizador Jackson JSON y lo usa para emitir eventos SAX.

Conversion Box !!!

Estoy usando el JSON que Dimitre ha pegado en su respuesta y se ha convertido en un XML. Veamos si funciona para ti …..

 import org.json.me.JSONObject; import cjm.component.cb.xml.ToXML; public class Test { public static void main(String[] args) { try { JSONObject objectJSON = new JSONObject(); objectJSON.put("ROOT", (new JSONObject("{\"teacher\":{\"name\":\"Mr Borat\",\"age\":\"35\",\"Nationality\":\"Kazakhstan\"},\"Class\":{\"Semester\":\"Summer\",\"Room\":null,\"Subject\":\"Politics\",\"Notes\":\"We're happy, you happy?\"},\"Students\":{\"Smith\":{\"FirstName\":\"Mary\",\"sex\":\"Female\"},\"Brown\":{\"FirstName\":\"John\",\"sex\":\"Male\"},\"Jackson\":{\"FirstName\":\"Jackie\",\"sex\":\"Female\"}},\"Grades\":{\"Test\":[{\"grade\":\"A\",\"points\":68,\"grade\":\"B\",\"points\":25,\"grade\":\"C\",\"points\":15},{\"grade\":\"C\",\"points\":2,\"grade\":\"B\",\"points\":29,\"grade\":\"A\",\"points\":55},{\"grade\":\"C\",\"points\":2,\"grade\":\"A\",\"points\":72,\"grade\":\"A\",\"points\":65}]}}"))); System.out.println("JSON: " + objectJSON); StringBuilder xml = new ToXML().convertToXML(objectJSON, true); // Conversion Box!!!! System.out.println("XML: " + xml); } catch (Exception e) { e.printStackTrace(); } } } 

Salida:

 JSON: {"ROOT":{"Students":{"Brown":{"FirstName":"John","sex":"Male"},"Jackson":{"FirstName":"Jackie","sex":"Female"},"Smith":{"FirstName":"Mary","sex":"Female"}},"Class":{"Subject":"Politics","Room":null,"Semester":"Summer","Notes":"We're happy, you happy?"},"Grades":{"Test":[{"points":15,"grade":"C"},{"points":55,"grade":"A"},{"points":65,"grade":"A"}]},"teacher":{"age":"35","name":"Mr Borat","Nationality":"Kazakhstan"}}} -------- JSON Detected -------- -------- XML created Successfully -------- XML: JohnMaleJackieFemaleMaryFemalePoliticsnullSummerWe're happy, you happy?15C55A65A35Mr BoratKazakhstan 

StAXON puede convertir JSON a XML utilizando XSLT con plantillas predeterminadas o StAX event API https://github.com/beckchr/staxon/wiki/Converting-JSON-to-XML

Aquí hay un ejemplo simple:

FICHERO DE ENTRADA:

 { "container":[ { "someString":"xxxxx", "someInteger":123, "someArrayElem":[ { "key":1111, "value":"One" }, { "key":2222, "value":"Two" } ] } ] } 

Código de Importaciones +:

 import de.odysseus.staxon.json.JsonXMLConfig; import de.odysseus.staxon.json.JsonXMLConfigBuilder; import de.odysseus.staxon.json.JsonXMLInputFactory; import de.odysseus.staxon.xml.util.PrettyXMLEventWriter; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLOutputFactory; import java.io.StringWriter; StringWriter stringWriter = new StringWriter(); JsonXMLConfig config = new JsonXMLConfigBuilder().multiplePI(false).prettyPrint(false).build(); XMLEventReader reader = new JsonXMLInputFactory(config).createXMLEventReader(getClass().getClassLoader().getResourceAsStream("input.json")); XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(stringWriter); writer = new PrettyXMLEventWriter(writer); writer.add(reader); String xml = stringWriter.getBuffer().toString(); 

SALIDA:

 < ?xml version="1.0" encoding="UTF-8"?>  xxxxx 123  1111 One   2222 Two   

Puede usar json-lib , proporciona conversión bidireccional.