Es gibt jetzt einige Open -Source -Projekte, die Java -Objekte in JSON umwandeln können. In den meisten Projekten müssen Sie jedoch Java -Anmerkungen in die Klassendateien aufnehmen, die nicht erfolgen können, wenn Sie den Quellcode nicht ändern können. Und sie unterstützen auch keine Java -Generika. Aber GSON nimmt diese beiden Punkte als seine sehr wichtigen Designziele.
Merkmale:
Die Anwendung von GSON enthält hauptsächlich zwei Konvertierungsmethoden: Tojson und Fromjson. Bevor Sie diese Objektkonvertierung verwenden, müssen Sie die Klasse des Objekts und seine Mitglieder erstellen, um die JSON -Zeichenfolge erfolgreich in das entsprechende Objekt umzuwandeln.
public class gsonutil {public static gson gson; / ** json zu javaban **/ public static final int json_javabean = 0x10001; / ** json, um <T> **/ public static final int json_list = 0x10002 aufzulisten; / ** json zu map <T> **/ public static final int json_map = 0x10004; / *** Konvertieren Sie ein Objekt in ein Zeichenfolge im JSON -Format* @param -Objekt, das in ein Objekt in JSON* @Return String: String im JSON -Format*/ public static String convertObject2json (Objektobjekt) {gson = new gson () konvertiert werden soll. return gson.tojson (Objekt); } / *** Konvertieren Sie JSON in Java -Objekt* @param InputStream InputStream, um in Java -Objekt zu konvertieren gson = new gson (); Object Object = null; // String json = inputStream2string (inputStream); BufferedReader reader = intputStream2BuffenedReader (InputStream); Type type = GetType (Javabean, convertflag); Object = gson.fromjson (Leser, Typ); Objekt zurückgeben; } / ** * Lassen Sie den Objekttyp in * @param javabean * @param convertFlag * @return * / private statische Gettype (Klasse <?> Javabean, int convertflag) {type type = null; Switch (convertFlag) {case json_list: if (javabean.equals (news.class)) {// json, um generic type = new typEToken <list <news >> () {}. GetType () aufzulisten; } brechen; case json_map: if (javabean.equals (news.class)) {// json to map generic type = new TypEToken <map <String, News >> () {}. GettType (); } brechen; Fall JSON_JAVABEAN: // JSON TO JAVABEAN TYPE = JAVABEAN; brechen; } Rückgabetyp; } / ** * InputStream in BufferedReader * @param InputStream * @return * / private statische BufferedReader InputStream2buffenedReader (InputStream InputStream) {Retream Retream New BufferedReader (neuer InputStreamReader (InputStream)); }}Codeanalyse:
Beim Konvertieren von JSON in ein Objekt soll der obige Code den Eingabestream von der Serverseite erhalten und dann den Eingabestream in ein BufferedReader -Objekt zusammenfassen und dann JSON in ein Java -Objekt über die Methode von JSON () umwandeln.
Der erste Parameter der GSON -Methode von JSON () unterstützt Parameter von Typ String, JsonElement und Leser und kann entsprechend Ihren Anforderungen ausgewählt werden. Der zweite Parameter der von json () Methode unterstützt Parameter vom Typ und Klasse <?>. Beim Konvertieren von JSON in Javabean können Sie den Parameter der Klasse <?> Verwenden, dh die Javaboan.cals, die Javaboan als zweiter Parameter entsprechen. Wenn Sie JSON in List -Generika umwandeln müssen und wenn Sie MAP -Generika markieren, müssen Sie TypeToken verwenden, um den zweiten Parameter in den Typtyp zu konvertieren (Typetoken ist ein von GSON bereitgestellter Datentypkonverter, der verschiedene Konvertierung des Datenerfassungstyps unterstützen kann).