java讲解

来源:文书网 3.36W

GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。

java讲解

其他的json解析库还有json-lib;Jackson;json

小编还是喜欢Google的Gson。

  一、使用场景:

java对象和json字符串的相互转换;日志输出。

例如:

Logger logger = ogger(s);Gson g = new Gson();(“return:”+on(map));

  二、用法举例:

1.基础用法toJson

toJason()方法将对象转换成Json字符串

Gson gson = new Gson();List persons = new ArrayList();String str = on(persons);

2.基础用法:fromJson()

Gson提供了fromJson()方法来实现从Json字符串转化为到java实体的方法。

比如json字符串为:

[{“name”:”name0”,”age”:0}]

则:

Person person = Json(str, s);

提供两个参数,分别是json字符串以及需要转换对象的类型。

3.避免Unicode转义

例如: {"s":"u003c"} 我只想简单的打印成这样 {"s":"<"} 解决方案: 我只需要 disable HTML escaping. Gson gson = new

GsonBuilder()bleHtmlEscaping()te();

4.排除某些字段

如果一个类A中含有字段field1,它的父类也含有字段field1,那么A对象toJson的时候,就会发生declares multiple JSON fields named field1。 解决方案1:在类A中去掉字段filed1. 解决方案2:使用Json的`@Expose注解 将A类MessageText中需要打印的字段filed1加上注解@Expose 。那么父类中没有加注解的field1就会被排除掉。

Gson g = new GsonBuilder()udeFieldsWithoutExposeAnnotation()te();

5.换属性名字

  三、使用示例:

import ;import stamp;import Format;import leDateFormat;import yList;import ;import ;import ;import Builder;import DeserializationContext;import Deserializer;import Element;import ParseException;import Primitive;import SerializationContext;import Serializer;import Token;public class GSonDemo { public static void main(String[] args) {// Gson gson = new Gson(); //设置将类型的属性进行格式转换 Gson gson = new GsonBuilder()sterTypeAdapter(s, new TimestampTypeAdapter())ateFormat("yyyy-MM-dd HH:mm:ss")te(); Listpersons = new ArrayList(); for (int i = 0; i < 10; i++) { Person p = new Person(); ame("name" + i); ge(i * 5); nsertTime(new Timestamp(entTimeMillis())); (p); } String str = on(persons); tln(str); Listps = Json(str, new TypeToken<List>(){}ype()); for(int i = 0; i < () ; i++) { Person p = (i); tln(ring()); } tln(new Timestamp(entTimeMillis())); }}class Person { private String name; private int age; private Timestamp Time; public String getName() { return name; } public void setName(String name) { = name; } public int getAge() { return age; } public void setAge(int age) { = age; } public Timestamp getInsertTime() { return Time; } public void setInsertTime(Timestamp Time) { = Time; } @Override public String toString() { return name + "t" + age + "t" + Time; }}//实现序列化,反序列化接口class TimestampTypeAdapter implements JsonSerializer, JsonDeserializer{ public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS"); String dateFormatAsString = at(new Date(ime())); return new JsonPrimitive(dateFormatAsString); } public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (!(json instanceof JsonPrimitive)) { throw new JsonParseException("The date should be a string value"); } try { DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS"); Date date = (Date) e(sString()); return new Timestamp(ime()); } catch (Exception e) { throw new JsonParseException(e); } }}

热门标签