Conversione da JSON a XML in Java

Sono nuovo di JSON. Sto avendo un programma per generare xml dall’object 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); 

l’output è:

  123true2.01JSON42 

il mio problema più grande è come scrivere i miei attributi invece di json_type = “numero” e anche scrivere i miei sotto-elementi come.

Utilizzare quindi la (eccellente) libreria JSON-Java di json.org

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

toString può prendere un secondo argomento per fornire il nome del nodo radice XML.

Questa libreria è anche in grado di convertire XML in JSON utilizzando XML.toJSONObject(java.lang.String string)

Controlla il Javadoc

Collegamento al repository github

POM

  org.json json 20160212  

post originale aggiornato con nuovi collegamenti

Se si dispone di un file dtd valido per l’xml, è ansible trasformare facilmente json in xml e xml in json utilizzando il file binario di eclipselink.

Fare riferimento a questo: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html

L’articolo ha anche un progetto di esempio (compresi i vasi di terze parti di supporto) come file zip che può essere scaricato per scopo di riferimento.

Se si desidera sostituire qualsiasi valore del nodo, è ansible farlo in questo modo

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

Trasformare con XSLT 3.0 è l’unico modo corretto per farlo, per quanto ne so. È garantito per produrre XML valido e una struttura piacevole a quello. https://www.w3.org/TR/xslt/#json

C’è una libreria underscore-java con metodo statico jsonToXml. Esempio dal vivo

Esempio di codice:

 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); } }