Converter o JSON para XML em Java
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);
a saída é:
<?xml version="1.0" encoding="UTF-8"?>
<o><array json_class="array"><e json_type="number">1</e><e json_type="number">2</e><e json_type="number">3</e></array><boolean json_type="boolean">true</boolean><double json_type="number">2.0</double><integer json_type="number">1</integer><name json_type="string">JSON</name><nested json_class="object"><id json_type="number">42</id></nested></o>
O meu maior problema é como escrever os meus próprios atributos em vez de json_type="número" e também escrever os meus próprios sub-elementos como .
5 answers
Utilize a (excelente) biblioteca JSON-Java de json.org então
JSONObject json = new JSONObject(str);
String xml = XML.toString(json);
toString
pode ter um segundo argumento para fornecer o nome do nó raiz XML.
Esta biblioteca também é capaz de converter XML para JSON usando XML.toJSONObject(java.lang.String string)
Verifica o Javadoc
Ligação ao repositório de github
POM
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>
publicação original actualizada com novas ligações
Se tiver um ficheiro dtd válido para o xml, poderá facilmente transformar o json em xml e o xml em json, usando a binária eclipselink jar.
Veja Isto: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html
O artigo também tem um projecto de amostra (incluindo os frascos de terceiros de apoio) como um ficheiro zip que pode ser descarregado para efeitos de referência.
Se quiser substituir qualquer valor de nó que possa fazer como este
JSONObject json = new JSONObject(str);
String xml = XML.toString(json);
xml.replace("old value", "new value");
Existe a biblioteca undercore-java com o método estático U. jsonToXml(jsonstring). Sou o responsável pelo projecto. Exemplo vivo
Exemplo de código:
import com.github.underscore.lodash.U;
public class MyClass {
public static void main(String args[]) {
String json = "{\"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);
}
}