GSON, la Biblioteca de Class Java, puede convertir los objetos Java en JSON o convertir las cuerdas JSON en un objeto Java igual. GSON admite objetos Java complejos arbitrarios que incluyen objetos sin código fuente.
Otras bibliotecas de análisis de JSON incluyen JSON-LIB; Jackson; com.alibaba.fastjson
Todavía me gusta el GSON de Google.
1. Use escenarios:
Conversión de objetos Java y cadenas JSON; salida de registro.
Por ejemplo:
Logger logger = logger.getLogger (CommonAction.Class); gson g = new gson (); logger.info ("return:"+g.tojson (map)); 2. Ejemplos de uso:
1. Uso básico TOJSON
El método tojason () convierte un objeto en una cadena JSON
Gson gson = new gson (); list personas = new ArrayList (); String str = gson.tojson (personas);
2. Uso básico: fromjson ()
GSON proporciona el método fromjson () para implementar el método de conversión de cadenas JSON a entidades Java.
Por ejemplo, la cadena JSON es:
[{"nombre": "name0", "edad": 0}] pero:
Persona persona = gson.fromjson (str, persona.class);
Proporcione dos parámetros, a saber, la cadena JSON y el tipo de objeto que debe convertirse.
3. Evite el escape unicode
Por ejemplo: {"S": "/U003C"} Solo quiero simplemente imprimirlo así {"s": "<"} Solución: Solo necesito deshabilitar HTML Escape. Gson gson = nuevo
GsonBuilder (). DILLETHTMLECAPING (). Create ();
4. Excluir ciertos campos
Si una Clase A contiene campo Field1 y su clase principal también contiene Field Field1, entonces cuando se producirá un objeto a JSON, declarará múltiples campos JSON llamados Field1. Solución 1: Eliminar el campo Artimado1 en la Clase A. Solución 2: Use la anotación @expose de JSON para agregar el campo Archivado1 para imprimir en la clase A MessageText @Expose. Luego se excluirá el campo1 sin anotación en la clase principal.
Gson g = new GsonBuilder (). ExcudeFieldswithoutExPoSeanNotation (). Create ();
5. Cambiar el nombre del atributo
3. Use ejemplos:
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; com.google.gson.gsonbuilder; import com.google.gson.jsondeserializationContext; import com.google.gson.jsondeserializer; import com.google.gson.jsonelement; import com.google.gson.jsonparsexception; import.google.gson.jsonprimitivo; import.google.gson.gson.jentinizationception; importe com.google.gson.jsonprimitive; import. com.google.gson.jsonserializer; import com.google.gson.reflect.typetoken; public class gSondemo {public static void main (string [] args) {// gson gson = new gson (); // Establecer la conversión de formato de las propiedades del tipo gson gson = new GsonBuilder (). RegisterTypeAdapter (timestamp.class, new TimestAMPTypeadapter ()). SetDateFormat ("yyyy-mm-dd hh: mm: ss"). Create (); Lista <Oll> Persons = New ArrayList <Oller> (); para (int i = 0; i <10; i ++) {persona p = nueva persona (); p.setName ("nombre" + i); p.setage (i * 5); P.SetInsertTime (nueva marca de tiempo (System.CurrentTimemillis ())); Personas. Add (P); } Cadena str = gson.tojson (personas); System.out.println (str); Lista <Oll> ps = gson.fromjson (STR, new typetoken <list <Oll>> () {}. GetType ()); para (int i = 0; i <ps.size (); i ++) {persona p = ps.get (i); System.out.println (p.ToString ()); } System.out.println (nueva marca de tiempo (System.CurrentTimemillis ())); }} Persona de clase {nombre de cadena privada; edad privada int; Insertar de marca de tiempo privada; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public int getAge () {return Age; } public void setAge (int Age) {this.age = edad; } public timestamp getInsertTime () {return inserttime; } public void setInserttime (Timestamp InsertTime) {this.inserttime = inserttime; } @Override public String toString () {Nombre de retorno + "/t" + edad + "/t" + inserttime; }} // Implementar la clase de serialización e interfaz de deserialización TimestamptyPeadapter implementa JSonserializer <Timestamp>, JSondeserializer <Timestamp> {public JSONElement Serialize (Timestamp Src, Type1, JSonserializationContext Arg2) HH: MM: SS: SS "); Cadena dateFormAtAsstring = format.format (nueva fecha (src.gettime ())); return new JsonPrimitive (dateFormatasString); } Public TimeStamp Deserialize (JSONELEMENT JSON, Type TypeOft, JSondeserializationContext Context) lanza JSONPARSEEXCECECION {if (! (JSON instanceo de JSONPrimitive)) {tire New JSONPARSEException ("La fecha debe ser un valor de cadena"); } try {dateFormat format = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss: ss"); Fecha fecha = (fecha) format.parse (json.getString ()); devolver nueva marca de tiempo (date.gettime ()); } catch (Exception e) {Throw New JsonParseException (e); }}}