Atualmente, existem alguns projetos de código aberto que podem converter objetos Java em JSON. Mas a maioria dos projetos exige que você inclua anotações Java nos arquivos da classe, o que não pode ser feito quando você não pode alterar o código -fonte. E eles também não suportam genéricos da Java. Mas GSON leva esses dois pontos como seus objetivos de design muito importantes.
Características:
A aplicação do GSON inclui principalmente dois métodos de conversão: Tojson e Fromjson. Antes de usar essa conversão de objetos, você precisa criar a classe do objeto e seus membros para converter com êxito a string json no objeto correspondente.
classe pública Gsonutil {public static gson gson; / ** json para javabean **/ public static final int json_javabean = 0x10001; / ** json para listar <T> **/ public static final int json_list = 0x10002; / ** json para mapear <t> **/ public static final int json_map = 0x10004; / *** Converta um objeto em uma string no formato json* @param objeto a ser convertido em um objeto em json* @return string: string no formato json*/ public static string convertrobject2json (objeto objeto) {gson = new gson (); retornar gson.tojson (objeto); } / *** Converta JSON para Java Objeto* @param inputStream inputStream para converter para o objeto java* @param list Javabean Obtenha o javabean contido no mapa* @param {gson = new gson (); Objeto objeto = null; // string json = inputStream2String (inputStream); Leitor bufferredader = intputStream2BufferedReader (inputStream); Tipo tipo = getType (javabean, convertflag); objeto = gson.fromjson (leitor, tipo); objeto de retorno; } / ** * Obtenha que o tipo de objeto seja convertido em * @param javabean * @param convertflag * @return * / tipo estático privado getType (classe <?> Javabean, int convertflag) {type type = null; switch (convertflag) {case json_list: if (javabean.equals (news.class)) {// json para listar o tipo genérico = new typeToken <list <tick>> () {}. getType (); } quebrar; case json_map: if (javabean.equals (news.class)) {// json para mapear o tipo genérico = new typeToken <map <string, news >> () {}. getType (); } quebrar; case json_javabean: // json para javabean tipo = javabean; quebrar; } Tipo de retorno; } / ** * Encapsula o InputStream no BufferErader * @param inputStream * @return * / private static buffaredreader inputStream2BufferedReader (inputStream inputStream) {return new buffarredreader (new inputStreamreader (inputStream)); }}Análise de código:
Ao converter o JSON em um objeto, o código acima é obter o fluxo de entrada do lado do servidor e encapsular o fluxo de entrada em um objeto BufferErader e depois converter JSON em um objeto Java através do método Fromjson ().
O primeiro parâmetro do método de Fromjson () da GSON () suporta parâmetros da String Type, JSonelement e Reader e pode ser selecionado de acordo com suas necessidades. O segundo parâmetro do método Fromjson () suporta parâmetros do tipo e classe <?>. Ao converter JSON em Javabean, você pode usar o parâmetro de classe <?>, Ou seja, usar o javabean.cals correspondentes a Javabean como o segundo parâmetro. Quando você precisa converter o JSON em genéricos da lista e, ao mapa genéricos, você precisa usar o TypeToken para converter o segundo parâmetro em tipo de tipo (o TypeToken é um conversor de tipo de dados fornecido pelo GSON, que pode suportar vários tipos de coleta de dados).