java - nodejs - json to xml php
Implementación de Java de la conversión de JSON a XML (9)
¿Hay JAR disponibles para convertir de JSON a XML?
Es posible que desee probar XStream. Eche un vistazo a http://x-stream.github.io/faq.html#JSON .
No es una implementación de 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:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f xs"
>
<xsl:import href="../f/func-json-document.xsl"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vstrParam" as="xs:string">
{
"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}
]
}
}
</xsl:variable>
<xsl:template match="/">
<xsl:sequence select=
"f:json-document($vstrParam)/Students/*[sex = ''Female'']"/>
</xsl:template>
</xsl:stylesheet>
Cuando se aplica la transformación anterior en cualquier documento XML (ignorado), se produce el resultado correcto :
<Smith>
<First_Name>Mary</First_Name>
<sex>Female</sex>
</Smith>
<Jackson>
<First_Name>Jackie</First_Name>
<sex>Female</sex>
</Jackson>
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);
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.
Puede usar http://json-lib.sourceforge.net/ , proporciona conversión bidireccional.
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"?>
<container>
<someString>xxxxx</someString>
<someInteger>123</someInteger>
<someArrayElem>
<key>1111</key>
<value>One</value>
</someArrayElem>
<someArrayElem>
<key>2222</key>
<value>Two</value>
</someArrayElem>
</container>
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?
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: <ROOT><Students><Brown><FirstName>John</FirstName><sex>Male</sex></Brown><Jackson><FirstName>Jackie</FirstName><sex>Female</sex></Jackson><Smith><FirstName>Mary</FirstName><sex>Female</sex></Smith></Students><Class><Subject>Politics</Subject><Room>null</Room><Semester>Summer</Semester><Notes>We''re happy, you happy?</Notes></Class><Grades><Test><LIST_ELEMENT_Test><points>15</points><grade>C</grade></LIST_ELEMENT_Test><LIST_ELEMENT_Test><points>55</points><grade>A</grade></LIST_ELEMENT_Test><LIST_ELEMENT_Test><points>65</points><grade>A</grade></LIST_ELEMENT_Test></Test></Grades><teacher><age>35</age><name>Mr Borat</name><Nationality>Kazakhstan</Nationality></teacher></ROOT>
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.