GSON, la bibliothèque de classe Java, peut convertir des objets Java en JSON ou convertir les cordes JSON en un objet Java égal. GSON prend en charge les objets Java complexes arbitraires, y compris les objets sans code source.
Les autres bibliothèques d'analyse JSON incluent JSON-LIB; Jackson; com.alibaba.fastjson
J'aime toujours GSON de Google.
1. Utilisez des scénarios:
Conversion des objets Java et des cordes JSON; Sortie du journal.
Par exemple:
Logger Logger = Logger.GetLogger (CommonAction.class); GSON G = new GSON (); logger.info ("return:" + g.tojson (map)); 2. Exemples d'utilisation:
1. Utilisation de base Tojson
La méthode tojason () convertit un objet en une chaîne JSON
Gson gson = new gson (); list Persons = new ArrayList (); String str = gson.tojson (Persons);
2. Utilisation de base: fromjson ()
GSON fournit la méthode Fromjson () pour implémenter la méthode de conversion des chaînes JSON en entités Java.
Par exemple, la chaîne JSON est:
[{"name": "name0", "age": 0}] mais:
Personne personne = gson.fromjson (str, personne.class);
Fournissez deux paramètres, à savoir la chaîne JSON et le type de l'objet qui doit être converti.
3. Évitez l'évasion Unicode
Par exemple: {"s": "/ u003c"} Je veux simplement l'imprimer comme cette solution {"s": "<"}: j'ai juste besoin de désactiver l'échappement HTML. GSON GSON = NOUVEAU
GsonBuilder (). DisableHtMleScaping (). Create ();
4. Exclure certains champs
Si une classe A contient Field Field1 et que sa classe parent contient également Field Field1, alors lorsqu'un objet à JSON déclare plusieurs champs JSON nommés Field1 se produira. Solution 1: Supprimez le champ Filed1 dans la classe A. Solution 2: Utilisez l'annotation @Expose de JSON pour ajouter le champ Filed1 pour imprimer en classe A MessageText @Expose. Ensuite, le champ1 sans annotation dans la classe parent sera exclu.
Gson g = new gsonBuilder (). Exclusefields withoutExposanNotation (). Create ();
5. Changer le nom de l'attribut
3. Utilisez des exemples:
import java.lang.reflect.type; import java.sql.timestamp; import java.text.dateformat; import java.text.simpledateformat; import java.util.arraylist; import java.util.date; import java.util.list; import com.google.gson.gson; import; com.google.gson.gsonbuilder; import com.google.gson.jSondeSerializationContext; import com.google.gson.jSondeSerializer; import com.google.gson.jsonelement; import com.google.gson.jsonparseException; import com.google.gson.jsonprime com.google.gson.jSonSerializationContext; import com.google.gson.jsonSerializer; import com.google.gson.reflect.typetoken; public class gsonmo {public static void main (String [] args) {// gson gson = new gson (); // Définir la conversion du format des propriétés de type gson gson = new gsonBuilder (). RegisterTypeAdapter (Timestamp.class, new TimeStAmpTypeAdapter ()). SetDateFormat ("yyyy-mm-dd hh: mm: ss"). Create (); List <ponv> Persons = new ArrayList <Sonving> (); pour (int i = 0; i <10; i ++) {personne p = new personne (); p.setName ("name" + i); P.Setage (i * 5); P.SetInsertTime (nouveau horodatage (System.CurrentTimeMillis ())); Personnes.Add (P); } String str = gson.tojson (Persons); System.out.println (STR); List <ponom> ps = gson.fromjson (str, new TypeToken <list <pony>> () {}. GetType ()); for (int i = 0; i <ps.size (); i ++) {personne p = ps.get (i); System.out.println (p.toString ()); } System.out.println (Nouveau horodatage (System.Currenttimemillis ())); }} classe de classe {nom de chaîne privée; Âge privé; Timestamp privé INSERTtime; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getage () {return âge; } public void Setage (int Age) {this.age = age; } Timestamp public getInsertTime () {return insertTime; } public void setInSertTime (Timestamp insertTime) {this.inserttime = inserttime; } @Override public String toString () {Nom de retour + "/ t" + âge + "/ t" + inserttime; }} // implémentation de la série de sérialisation et de désérialisation classe TimestampTypeAdapter implémente JSonSerializer <Timestamp>, JSonSeSerializer <Timestamp> {public JSonElement Serialialize (Timestamp Src, Type Arg1, JSonSerializationContex HH: MM: SS: SS "); String dateFormatAsstring = Format.Format (nouvelle date (src.getTime ())); return new JSONPrimitive (DateFormaStString); } Public TimeStamp Desérialize (JSONElement JSON, Type Typeoft, JSondeSerializationContext Context) lève JSONPaSeException {if (! (JSON Instanceof JSONPrimitive)) {Throw New JSonParseException ("La date devrait être une valeur de chaîne"); } essayez {dateFormat format = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss: ss"); DATE DATE = (DATE) FORMAT.PARSE (JSON.GetAsstring ()); return nouvel horodat (date.getTime ()); } catch (exception e) {lancer un nouveau jsonparseException (e); }}}