Muchos datos con soportes [] aparecieron en la base de datos del proyecto. La prueba informó un error. Después de la resolución de problemas, fue causado por el uso del paquete JSON-LIB JAR. JSON-LIB convierte los valores nulos en [] durante el proceso de convertir las cadenas XML en formato JSON. Ahora resumiré brevemente las similitudes y diferencias entre los dos paquetes XML a JSON. Tal vez porque tales preguntas son relativamente básicas, aunque alguien hizo tales preguntas en línea, no se encontraron respuestas. Para facilitar a los programadores junior como yo descubrir y resolver problemas lo antes posible, escribí esta publicación de blog.
La mayoría de los paquetes JAR para XML a JSON que se pueden encontrar en línea son net.sf.json-lib. Este paquete se usa más en el análisis de JSON, pero la desventaja es que requiere más paquetes de dependencia. Pero aquí solo hablaré de su XML a JSON.
1.net.sf.json-lib a JSON;
Json json = xmlSerializer.read (xml);
El problema con este método es que convertirá el valor nulo a []. Use json.get (valor) .getClass para obtener el tipo de []. Puede encontrar que JSON-LIB reconoce el valor nulo como un tipo JSONArray en lugar de una cadena, y el método ToString de JSONArray se reescribe como [,,,,]
Si aún desea usar este método, puede realizar las siguientes modificaciones. Al usar el método getString () para obtener el valor del objeto JSON convertido de XML, primero determine si el tipo es cadena y luego obténlo.
json.get (valor) instancia de cadena? json.getString (valor): ""
2. Org.json a Json:
org.json.jsonObject jsonObj = org.json.xml.tojsonObject (xml);
El valor [] no se generará, pero la etiqueta raíz se retendrá (el documento XML estándar tiene y solo una etiqueta raíz, la llamada etiqueta raíz es un par de <taborates raíz> </icoceutras> que contiene todas las demás etiquetas), y la etiqueta raíz general no tiene sentido para los datos, por lo que necesita hacer el procesamiento del procesamiento de procesamiento
jsonobj.get ("root");Aquí está el código de prueba:
paquete com.pptv.ppvision.util; importar org.json.xml; importar net.sf.json.jsonObject; importar net.sf.json.xml.xmlSerializer; clase pública XML2JSONTEST {String static privado xml = "<Root> <serem> <name> Weless </name> <sexo> </sexo> </serem> </root>"; public static void main (string [] args) {testorgjson (); testXmlSerializer (); } public static void testorgjson () {org.json.jsonObject jsonObj = xml.tojsonObject (xml); System.out.println ("org.json xml2json:"+jsonobj); org.json.jsonObject user = jsonobj.getjsonObject ("root"). getJsonObject ("user"); // org.json necesita eliminar la etiqueta root system.out.println ("nombre del usuario:"+user.getString ("nombre")); System.out.println ("Gender:"+user.getString ("sexo")); } public static void testXmlSerializer () {XMLSerializer XMLSerializer = new XMLSerializer (); JsonObject jsonObject = (jsonObject) xmlSerializer.read (xml); System.out.println ("JSON-LIB XML2JSON Resultado:"+jsonObject); JsonObject user = jsonObject.getJsonObject ("usuario"); System.out.println ("Nombre de usuario:"+user.get ("nombre")); System.out.println ("género:"+(user.get ("sexo) instancia de cadena? User.getString (" sexo "):" ")); }}Aquí hay dos métodos para ti
Una es usar el método GetString () para que el valor del objeto JSON se convierta de XML, primero determine si el tipo es cadena y luego obténlo.
Uno es org.json
Puede elegir qué método usar de acuerdo con sus necesidades