Ahora hay algunos proyectos de código abierto que pueden convertir los objetos Java en JSON. Pero la mayoría de los proyectos requieren que incluya anotaciones Java en los archivos de clase, que no se pueden hacer cuando no puede cambiar el código fuente. Y tampoco apoyan los genéricos Java. Pero Gson toma estos dos puntos como sus objetivos de diseño muy importantes.
Características:
La aplicación de Gson incluye principalmente dos métodos de conversión: Tojson y Fromjson. Antes de usar esta conversión de objetos, debe crear la clase del objeto y sus miembros para convertir con éxito la cadena JSON en el objeto correspondiente.
Clase pública Gsonutil {Public static Gson Gson; / ** json a Javabean **/ public static final int json_javabean = 0x10001; / ** JSON para enumerar <t> **/ public static final int json_list = 0x10002; / ** json para mapear <T> **/ public static final int json_map = 0x10004; / *** Convierta un objeto a una cadena en formato JSON* @param Object se convertirá en un objeto en JSON* @return String: String en formato json*/ public static string convertoBject2json (objeto objeto) {gson = new gson (); return gson.tojson (objeto); } / *** Convertir JSON a objeto Java* @param InputStream InputStream para convertir a objeto Java* @param Javabean List obtenga el javabean contenido en el mapa* @param convertirflag tipo identificador* @return object gson = new Gson (); Objeto objeto = null; // string json = inputStream2String (inputStream); BufferedReader lector = intputStream2BufferEderReader (inputStream); Type type = getType (javabean, convertSflag); objeto = gson.fromjson (lector, type); Objeto de retorno; } / ** * Obtenga el tipo de objeto que se convertirá en * @param javabean * @param convertFlag * @return * / private static type getType (class <?> Javabean, int convertflag) {type type = null; switch (convertflag) {case json_list: if (javabean.equals (news.class)) {// json para enumerar el tipo genérico = new typetoken <list <nots> () {}. getType (); } romper; case json_map: if (javabean.equals (news.class)) {// json para mapear tipo genérico = new typetoken <map <string, news >> () {}. getType (); } romper; case json_javabean: // json a javabean type = javabean; romper; } Tipo de retorno; } / ** * Encapsula InputStream en BufferedReader * @param inputStream * @return * / private static bufferedReader inputStream2BufferedReader (inputStream InputStream) {return New BufferEdreader (new InputStreamReader (inputStream)); }}Análisis de código:
Al convertir JSON en un objeto, el código anterior es obtener la secuencia de entrada del lado del servidor, luego encapsular la secuencia de entrada en un objeto BufferedReader y luego convertir JSON en un objeto Java a través del método fromjson ().
El primer parámetro del método GSON Fromjson () admite parámetros de Tipo String, JSONElement y Reader, y puede seleccionarse de acuerdo con sus necesidades. El segundo parámetro del método fromjson () admite parámetros de tipo y clase <?>. Al convertir JSON a Javabean, puede usar el parámetro de clase <?>, Es decir, usar Javabean.cals correspondientes a Javabean como el segundo parámetro. Cuando necesite convertir JSON en genéricos de la lista, y cuando MAP GENENICS, debe usar TypeToken para convertir el segundo parámetro en tipo de tipo (TypeToken es un convertidor de tipo de datos proporcionado por GSON, que puede admitir varias conversiones de tipo de recopilación de datos).