Il existe maintenant des projets open source qui peuvent convertir des objets Java en JSON. Mais la plupart des projets vous obligent à inclure des annotations Java dans les fichiers de classe, ce qui ne peut pas être fait lorsque vous ne pouvez pas modifier le code source. Et ils ne soutiennent pas non plus les génériques Java. Mais GSON prend ces deux points comme ses objectifs de conception très importants.
Caractéristiques:
L'application de GSON comprend principalement deux méthodes de conversion: Tojson et Fromjson. Avant d'utiliser cette conversion d'objet, vous devez créer la classe de l'objet et ses membres pour convertir avec succès la chaîne JSON en objet correspondant.
classe publique Gsonutil {public statique GSON GSON; / ** json à javabean ** / public static final int Json_javaean = 0x10001; / ** JSON à Lister <T> ** / public static final int Json_List = 0x10002; / ** json à map <T> ** / public static final int Json_map = 0x10004; / ** * Convertir un objet en une chaîne au format JSON * @param objet à convertir en un objet dans JSON * @return String: String au format JSON * / public static String convertObject2json (objet objet) {gson = new gson (); return gson.tojson (objet); } / ** * Convertir JSON en objet Java * @param InputStream InputStream pour convertir à l'objet Java * @param javabean list procurez l'objet Javabean: l'objet de la carte * / public static convertjson 2OBRIER (InputStream InputStream, classe <? gson = new gson (); Objet objet = null; // string json = inputStream2String (inputStream); BufferedReader Reader = IntputStream2BuffereDReader (InputStream); Type type = getType (javabean, convertflag); object = gson.fromjson (lecteur, type); retour objet; } / ** * Obtenez le type d'objet à convertir en * @param javabean * @param convertflag * @return * / type statique privé getType (class <?> Javabean, int convertflag) {type type = null; switch (convertflag) {case json_list: if (javabean.equals (news.class)) {// json pour lister le type générique = new TypeToken <list <news>> () {}. getType (); } casser; case json_map: if (javabean.equals (news.class)) {// json à map générique type = new typetoken <map <string, news >> () {}. getType (); } casser; Case JSON_JAVABEAN: // JSON à JavaBean Type = JavaBean; casser; } return type; } / ** * Encapsule InputStream dans BuffereDReader * @param inputStream * @return * / private static buffereDreder inputStream2BuffereDReader (InputStream inputStream) {return new BufferedReader (new InputStreamReader (InputStream)); }}Analyse du code:
Lors de la conversion de JSON en un objet, le code ci-dessus consiste à obtenir le flux d'entrée du côté serveur, puis à encapsuler le flux d'entrée dans un objet BufferedReader, puis à convertir JSON en un objet Java via la méthode Fromjson ().
Le premier paramètre de la méthode Fromjson () de GSON prend en charge les paramètres de la chaîne de type, JSONElement et le lecteur, et peut être sélectionné en fonction de vos besoins. Le deuxième paramètre de la méthode Fromjson () prend en charge les paramètres de type et de classe <?>. Lors de la conversion de JSON en JavaBean, vous pouvez utiliser le paramètre Class <?>, C'est-à-dire utiliser les JavaBean.cals correspondant à JavaBean comme deuxième paramètre. Lorsque vous devez convertir JSON en génériques de liste, et lorsque les génériques de cartes, vous devez utiliser TypeToken pour convertir le deuxième paramètre en type de type (TypeToken est un convertisseur de type de données fourni par GSON, qui peut prendre en charge diverses données de collecte de données Conversion de type).