O GSON, a biblioteca da classe Java, pode converter objetos Java em JSON ou converter strings JSON em um objeto Java igual. O GSON suporta objetos Java complexos arbitrários, incluindo objetos sem código -fonte.
Outras bibliotecas de análise JSON incluem JSON-Lib; Jackson; com.alibaba.fastjson
Eu ainda gosto do GSON do Google.
1. Use cenários:
Conversão de objetos Java e cordas JSON; saída de log.
Por exemplo:
Logger logger = logger.getLogger (Commonaction.class); gson g = new gson (); logger.info ("return:"+g.tojson (map)); 2. Exemplos de uso:
1. Uso básico TOJSON
Método Tojason () converte um objeto em uma string json
Gson gson = new GSON (); listar pessoas = new ArrayList (); String str = gson.tojson (pessoas);
2. Uso básico: Fromjson ()
O GSON fornece o método Fromjson () para implementar o método de conversão de strings JSON em entidades Java.
Por exemplo, a string json é:
[{"Name": "Name0", "Age": 0}] mas:
Pessoa pessoa = gson.Fromjson (str, pessoa.class);
Forneça dois parâmetros, a saber, a string json e o tipo de objeto que precisa ser convertido.
3. Evite o Unicode Escape
Por exemplo: {"s": "/u003c"} Eu só quero simplesmente imprimi -lo como este {"s": "<"} Solução: eu só preciso desativar o HTML escapando. Gson gson = novo
Gsonbuilder (). Desabillehtmlescaping (). Create ();
4. Exclua certos campos
Se uma classe A contiver o campo Field1 e sua classe pai também contiver campo de campo1, quando um objeto para JSON, declara que vários campos JSON denominados Field1 ocorrerão. Solução 1: Remova o campo Filled1 na classe A. Solução 2: use a anotação @expose do JSON para adicionar o campo Filled1 para imprimir na classe A MessageText @Expose. Em seguida, o campo1 sem anotação na classe pai será excluído.
Gson g = new gsonbuilder (). ExcludeFieldsWithoutExposeanNoTation (). Create ();
5. Nome do atributo de mudança
3. Use exemplos:
importar java.lang.reflect.type; importar java.sql.timestamp; importar java.text.dateFormat; importar java.text.simpledEformat; import java.util.ArrayList; import java.util.date; import java.util.list complist; com.google.gson.gsonbuilder; importar com.google.gson.jSondSerializationContext; importar com.google.gson.jSondSerializer; import com.google.gson.jsonElement; import com.google.gson.jsonparseexception; import.GOOG.GSONEMENT; import.GOGLITIVILITION.GSOOG.JSONPARSEEXCECTION; com.google.gson.jsonserializer; importar com.google.gson.reflect.typetken; classe pública gsondemo {public static void main (string [] args) {// gson gson = new gson (); // Defina a conversão do formato de propriedades do tipo gson gson = new GsonBuilder (). RegisterTyPeAdApter (Timestamp.class, new TimeStampTypeAdApter ()). SetDateFormat ("Aaaaaa-mm-dd hh: mm: ss"). Crie (); List <Pesso> PESSONS = NOVA ARRAYLIST <SESSO> (); for (int i = 0; i <10; i ++) {pessoa p = new Person (); p.setName ("nome" + i); p.setage (i * 5); p.setInsertTime (novo timestamp (System.CurrentTimEmillis ())); pessoas.Add (P); } String str = gson.tojson (pessoas); System.out.println (str); List <Pesso> ps = gson.fromjson (str, new typeToken <list <sesson>> () {}. GetType ()); for (int i = 0; i <ps.size (); i ++) {pessoa p = Ps.get (i); System.out.println (p.toString ()); } System.out.println (novo timestamp (System.currenttimemillis ())); }} classe Pessoa {Nome da String Private; private Int Age; Inserção de registro de data e hora privado; public String getName () {Return Name; } public void setName (nome da string) {this.name = name; } public int getage () {Age de retorno; } public void setage (int Age) {this.age = Age; } public timestamp getInsertTime () {return inserttime; } public void setInsertTime (Timestamp InsertTime) {this.insertTime = insertTime; } @Override public String tostring () {Return Name + "/T" + Age + "/T" + InsertTime; }}//Implement serialization and deserialization interface class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> { public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH: MM: SS: SS "); String dateFormatAssTring = format.format (new Date (src.gettime ())); retornar novo jsonPrimitive (DateFormatasstring); } Public Timestamp Deserialize (JSonelement JSON, TYPEOFT, JSONDERSERIALIZAÇÃO CONTEXTO) lança jsonparseException {if (! (JSON Instância de JSONPrimitive)) {tire a nova jsonparseException ("a data deve ser um valor de string"); } tente {dateFormat Format = new SimpleDateFormat ("AA YYYY-MM-DD HH: MM: SS: SS"); Data data = (data) format.parse (json.getasstring ()); Retornar novo registro de data e hora (DATE.GETTIME ()); } catch (Exceção e) {lança nova jsonparseException (e); }}}