本文共 2576 字,大约阅读时间需要 8 分钟。
> 类型格式TypeTokenType listType = new TypeToken>(){}.getType();> 时间输出格式GsonBuilder builder = new GsonBuilder();builder.setDateFormat("yyyy年MM月dd HH:mm:ss"); Gson gson = builder.create();> 别名String JSON_DATA_STRING = { nick_name: "sagomilk"}public class Person { @SerializedName("nick_name") public String name;}gson.fromJson(JSON_DATA_STRING, Person.class);> 支持null输出Gson includeNullsGson = gsonBuilder.serializeNulls().create();> 禁用html转义Gson unescapingGson = new GsonBuilder().disableHtmlEscaping().create();> 通过访问修饰符控制序列化和反序列化访问修饰符包括:public、private、protected、static 、final等,注意:static 会自动被排除。 public class User { private String name; public boolean sex; static int age; final String homeAddress; } Gson gson = new GsonBuilder().excludeFieldsWithModifiers( Modifier.FINAL,Modifier.PRIVATE).create(); System.out.println(gson.toJson(user)); // 结果:{"sex":true} > 多版本支持class VersionClass{ @Since(1.0) String versionOneField = "1.0"; @Since(2.0) String versionTwoField = "2.0";}Gson gson = new GsonBuilder().setVersion(1.0).create();> Serializerprivate class DateTimeSerializer implements JsonSerializer { public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.toString()); }}> Deserializerprivate class DateTimeDeserializer implements JsonDeserializer { public DateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new DateTime(json.getAsJsonPrimitive().getAsString()); }}> Serialization 和 DeserializationGsonBuilder gson = new GsonBuilder();gson.registerTypeAdapter(MyType2.class, new MyTypeAdapter());gson.registerTypeAdapter(MyType.class, new MySerializer());gson.registerTypeAdapter(MyType.class, new MyDeserializer());gson.registerTypeAdapter(MyType.class, new MyInstanceCreator());> Array - 直接解析成数组 Person[] foos = gson.fromJson(JSON_DATA_STRING, Person[].class); List fooList = Arrays.asList(foos); - 解析成为List Type listType = new TypeToken >(){}.getType(); ArrayList foos = gson.fromJson(JSON_DATA_STRING, listType);> Map如果没有对应的Object class,可以直接使用Map.class,但是使用的时候需要执行转换Map m = gson.fromJson(JSON_DATA_STRING, Map.class);> 命名风格setFieldNamingPolicy new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();> 美化GsonBuilder gsonBuilder = new GsonBuilder();Gson prettyGson = gsonBuilder.setPrettyPrinting().create();
转载地址:http://jymgb.baihongyu.com/