Conversión de JSON a XML en Java

Soy nuevo en json. Estoy teniendo un progtwig para generar xml desde el objeto json.

String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}"; JSON json = JSONSerializer.toJSON( str ); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setTypeHintsCompatibility( false ); String xml = xmlSerializer.write( json ); System.out.println(xml); 

la salida es:

  123true2.01JSON42 

Mi mayor problema es cómo escribir mis propios atributos en lugar de json_type = “number” y también escribir mis propios sub elementos como.

Utilice la (excelente) biblioteca JSON-Java de json.org y luego

 JSONObject json = new JSONObject(str); String xml = XML.toString(json); 

toString puede tomar un segundo argumento para proporcionar el nombre del nodo raíz XML.

Esta biblioteca también puede convertir XML a JSON utilizando XML.toJSONObject(java.lang.String string)

Verifica el Javadoc

Enlace al repository github

POM

  org.json json 20160212  

publicación original actualizada con nuevos enlaces

Si tiene un archivo dtd válido para el archivo xml, puede transformar fácilmente json en xml y xml en json utilizando el archivo binario eclipselink.

Consulte esto: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html

El artículo también tiene un proyecto de muestra (incluidos los archivos auxiliares de terceros) como un archivo comprimido que se puede descargar para fines de referencia.

Si desea reemplazar cualquier valor de nodo, puede hacer esto

 JSONObject json = new JSONObject(str); String xml = XML.toString(json); xml.replace("old value", "new value"); 

Transformar con XSLT 3.0 es la única manera correcta de hacerlo, por lo que yo sé. Está garantizado para producir XML válido, y una estructura agradable en eso. https://www.w3.org/TR/xslt/#json

Hay una biblioteca underscore-java con el método estático jsonToXml. Ejemplo en vivo

Ejemplo de código:

 import com.github.underscore.lodash.U; import java.util.Map; public class MyClass { @SuppressWarnings("unchecked") public static void main(String args[]) { String str = "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}"; System.out.println(json); String xml = U.jsonToXml(json); System.out.println(xml); } }