Сейчас есть некоторые проекты с открытым исходным кодом, которые могут преобразовать Java -объекты в JSON. Но большинство проектов требуют, чтобы вы включали аннотации Java в файлы класса, которые не могут быть сделаны, когда вы не можете изменить исходный код. И они также не поддерживают дженерики Java. Но Гон воспринимает эти два момента в качестве его очень важных целей дизайна.
Функции:
Приложение GSON в основном включает в себя два метода преобразования: Tojson и Fromjson. Прежде чем использовать это преобразование объекта, вам необходимо создать класс объекта и его участники, чтобы успешно преобразовать строку JSON в соответствующий объект.
открытый класс gsonutil {public static Gson Gson; / ** json to javabean **/ public static final int json_javabean = 0x10001; / ** json для списка <t> **/ public static final int json_list = 0x10002; / ** json to map <t> **/ public static final int json_map = 0x10004; / *** Конвертировать объект в строку в формате json* @param объект, который будет преобразован в объект в json* @return String: String в формате JSON*/ public Static String ConvertObject2json (Object Object) {gson = new gson (); вернуть gson.tojson (объект); } /** * Convert Json to Java object* @param inputStream inputStream to convert to Java object * @param javaBean List Get the javaBean contained in the map * @param convertFlag Convert type identifier* @return Object:Java object*/ public static Object convertJson2Object(InputStream inputStream,Class<?>javaBean,int convertFlag) { gson = new gson (); Объект объекта = null; // string json = inputStream2String (inputStream); BufferedReader Reader = IntputStream2BufferedReader (InputStream); Тип типа = getType (javabean, convertflag); Object = gson.fromjson (читатель, тип); вернуть объект; } / ** * Получить тип объекта, который будет преобразован в * @param javabean * @param convertflag * @return * / private static type getType (class <?> Javabean, int convertflag) {type = null; Switch (ConvertFlag) {case json_list: if (javabean.equals (news.class)) {// json для перечисления generic type = new typetoken <list <news >> () {}. getType (); } перерыв; case json_map: if (javabean.equals (news.class)) {// json для карты generic type = new typetoken <map <string, news >> () {}. getType (); } перерыв; case json_javabean: // json to javabean type = javabean; перерыв; } return Type; } / ** * Инкапсулировать inputStream в BufferedReader * @param inputstream * @return * / private static bufferedreader inputstream2bufferedreader (inputstream inputStream) {return new BufferedReader (new InputStreamReader (inputStream)); }}Анализ кода:
При преобразовании JSON в объект приведенный выше код должен получить поток ввода со стороны сервера, а затем инкапсулировать поток ввода в объект BufferedReader, а затем преобразовать JSON в объект Java через метод FackJson ().
Первый параметр метода GSON FARJSON () поддерживает параметры типа строки, jsonElement и читателя, и может быть выбран в соответствии с вашими потребностями. Второй параметр метода Fackjson () поддерживает параметры типа и класса <?>. При преобразовании JSON в Javabean вы можете использовать параметр класса <?>, То есть использовать Javabean.cals, соответствующие Javabean в качестве второго параметра. Когда вам нужно преобразовать JSON в List Generics, а когда Map Generics вам необходимо использовать TypleToken для преобразования второго параметра в тип типа (TypetOken - это конвертер типа данных, предоставленный GSON, который может поддерживать различные конверсии типа сбора данных).