이제 Java 객체를 JSON으로 변환 할 수있는 오픈 소스 프로젝트가 있습니다. 그러나 대부분의 프로젝트에서는 클래스 파일에 Java 주석을 포함해야하며 소스 코드를 변경할 수없는 경우 수행 할 수 없습니다. 그리고 그들은 또한 Java 제네릭을 지원하지 않습니다. 그러나 GSON 은이 두 가지 점을 그의 매우 중요한 디자인 목표로 받아들입니다.
특징:
GSON의 응용 프로그램에는 주로 Tojson과 Fromjson의 두 가지 전환 방법이 포함됩니다. 이 객체 변환을 사용하기 전에 JSON 문자열을 해당 객체로 성공적으로 변환하려면 객체의 클래스 및 멤버를 만들어야합니다.
공개 클래스 Gsonutil {Public STATIC GSON GSON; / ** json to javabean **/ public static final int json_javabean = 0x10001; / ** json to list <t> **/ public static final int json_list = 0x10002; / ** json to map <t> **/ public static final int json_map = 0x10004; / *** json 형식의 문자열로 객체를 변환 할* @param 객체 json* @return string : json format*/ public static string convertObject2json (개체) {gson = new Gson (); return gson.tojson (객체); } / *** JSON 변환 java 개체* @param inputStream inputStream을 Java Object* @param javabean 목록으로 변환하여 맵* @param convertflag convert 유형 식별자* @return 개체 : Java Object* / public static 객체 convertjson2object (inputstream inputstream, class <? intputstream inputstream, classe) <? gson (); Object 객체 = 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 type = null; switch (convertflag) {case json_list : if (javabean.equals (news.class)) {// json to generic type = new typetoken <list <news>> () {}. gettype (); } 부서지다; CASE JSON_MAP : if (javabean.equals (news.class)) {// json generic type = new typetoken <map <string, news >> () {}. gettype (); } 부서지다; 사례 json_javabean : // json to javabean type = javabean; 부서지다; } 반환 유형; } /** * Encapsulate InputStream into BufferedReader * @param inputStream * @return */ private static BufferedReader inputStream2BufferedReader(InputStream inputStream) { return new BufferedReader(new InputStreamReader(inputStream)); }}코드 분석 :
JSON을 객체로 변환 할 때 위 코드는 서버 측에서 입력 스트림을 얻은 다음 입력 스트림을 BufferedReader 객체로 캡슐화 한 다음 JSON을 FromJson () 메소드를 통해 Java 객체로 변환하는 것입니다.
GSON 's FromJson () 메소드의 첫 번째 매개 변수는 유형 String, JsonElement 및 Reader의 매개 변수를 지원하며 귀하의 요구에 따라 선택할 수 있습니다. Fromjson () 메소드의 두 번째 매개 변수는 유형 및 클래스 <?>의 매개 변수를 지원합니다. JSON을 Javabean으로 변환 할 때 클래스 <?> 매개 변수를 사용할 수 있습니다. 즉, Javabean에 해당하는 javabean.cals를 두 번째 매개 변수로 사용할 수 있습니다. JSON을 목록 제네릭으로 변환 해야하는 경우 MAP 제네릭을 사용하면 TypEtoken을 사용하여 두 번째 매개 변수를 유형 유형으로 변환해야합니다 (TypEtoken은 GSON이 제공하는 데이터 유형 변환기이며 다양한 데이터 수집 유형 변환을 지원할 수 있습니다).