Sekarang ada beberapa proyek open source yang dapat mengubah objek Java menjadi JSON. Tetapi sebagian besar proyek mengharuskan Anda untuk memasukkan anotasi Java dalam file kelas, yang tidak dapat dilakukan ketika Anda tidak dapat mengubah kode sumber. Dan mereka juga tidak mendukung java generik. Tetapi Gson mengambil dua poin ini sebagai tujuan desainnya yang sangat penting.
Fitur:
Aplikasi GSON terutama mencakup dua metode konversi: TOJSON dan dariJSON. Sebelum menggunakan konversi objek ini, Anda perlu membuat kelas objek dan anggotanya untuk berhasil mengubah string JSON menjadi objek yang sesuai.
kelas publik gsonutil {public static gson gson; / ** json to javabean **/ public static final int json_javabean = 0x10001; / ** json untuk mendaftar <t> **/ public static final int json_list = 0x10002; / ** json untuk memetakan <t> **/ public static final int json_map = 0x10004; / *** Konversi objek ke string dalam format JSON* @param objek untuk dikonversi ke objek di json* @return string: string dalam format json*/ public static string convertObject2json (objek objek) {gson = baru gson (); kembalikan gson.toJson (objek); } / *** Konversi json ke objek java* @param inputStream inputstream untuk dikonversi ke objek java* @param javabean mendapatkan javabean yang terkandung dalam peta* @param convertFlag tipe convert) @return objek: java objek* / objek statis public convertjson2object (inputREncREam: Java Object* / Public Static Object Obyek ConvertJson2Object (InputREKREAM: JAVA Object* / Public Static Objecty Obyek ConvertJson2Object (inputREKREAM (JAVA Object* / Public Static Obyek Static ObjectJson2 {gson = GSON baru (); Objek objek = null; // string json = inputStream2String (inputStream); BufferedReader Reader = IntputStream2BufferedReader (InputStream); Tipe tipe = getType (javabean, convertFlag); objek = gson.fromjson (pembaca, ketik); objek pengembalian; } / ** * Dapatkan tipe objek yang akan dikonversi ke * @param javabean * @param convertFlag * @return * / private static type getType (class <?> Javabean, int convertFlag) {type type = null; sakelar (convertFlag) {case json_list: if (javabean.equals (news.class)) {// json untuk mendaftar tipe generik = typetoken baru <Daftar <sews>> () {}. getType (); } merusak; case json_map: if (javabean.equals (news.class)) {// json untuk memetakan tipe generik = typetoken baru <peta <string, news >> () {}. getType (); } merusak; case json_javabean: // json to javabean type = javabean; merusak; } tipe pengembalian; } / ** * Encapsulate inputStream ke bufferedReader * @param inputStream * @return * / private static BufferedReader inputStream2BufferedReader (inputStream inputStream) {return new BufferedReader (inputStreamReader (inputStream)); }}Analisis Kode:
Saat mengonversi JSON ke suatu objek, kode di atas adalah untuk mendapatkan aliran input dari sisi server, kemudian merangkum aliran input menjadi objek bufferedReader, dan kemudian mengonversi JSON ke objek Java melalui metode Fromjson ().
Parameter pertama metode GSON's fromjson () mendukung parameter string tipe, JSONElement dan pembaca, dan dapat dipilih sesuai dengan kebutuhan Anda. Parameter kedua dari metode fromjson () mendukung parameter tipe dan kelas <?>. Saat mengonversi JSON ke Javabean, Anda dapat menggunakan parameter kelas <?>, Yaitu, gunakan javabean.cals yang sesuai dengan Javabean sebagai parameter kedua. Ketika Anda perlu mengonversi JSON menjadi daftar obat generik, dan ketika memetakan obat generik, Anda perlu menggunakan Typetoken untuk mengonversi parameter kedua ke jenis tipe (Typetoken adalah konverter tipe data yang disediakan oleh GSON, yang dapat mendukung berbagai konversi tipe pengumpulan data).