AcidHawk:
Teniendo en cuenta que tengo este XML:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<op>update</op>
<path>someString</path>
<value>12345</value>
</Root>
y quiero que esta salida en JSON:
[{ "op":"update", "path":"someString", "value":"12345" }]
He probado el siguiente código:
package jsonconvertor;
import net.sf.json.JSON;
import net.sf.json.xml.XMLSerializer;
public class JSONConvertor {
public static void main(String[] args) {
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root><op>update</op><path>someString</path><value>12345</value></Root>";
String output = "";
XMLSerializer xml = new XMLSerializer();
JSON jObj = xml.read( input );
output = jObj.toString();
System.out.println("My JSON:\n" + output);
}
}
Cuando ejecuto el código me da la siguiente respuesta:
{"op":"update","path":"someString","value":"12345"}
Sin embargo, usted notará que el líder '[' y cierre ']' faltan.
Cuando intento cambiar la cadena XML "entrada" en el código a la siguiente:
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root class=\"object\"><op>update</op><path>someString</path><value>12345</value></Root>";
Lo cual tiene sentido ya que itRoot era un objeto para empezar, así que intentado cambiar la cadena "de entrada" a "matriz":
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root class=\"array\"><op>update</op><path>someString</path><value>12345</value></Root>";
Sin embargo luego me sale el siguiente:
["update","someString","12345"]
¿Qué me estoy perdiendo? Quiero la salida que consigo cuando class = "objeto", sin embargo lo quiero entre corchetes. Quiero que la salida se vea como el ejemplo en la parte superior del poste.
apandey846:
Pruebe con esta cadena de entrada que debería funcionar:
String input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Root class=\"array\"><SubRoot class=\"object\"><op>update</op><path>someString</path><value>12345</value></SubRoot></Root>";