直接new Gson()对象
这种方式创建的Gson对象一些参数都是默认配置
//使用new方法 Gson gson = new Gson; //tojson(需要序列化的对象,序列化对象所属的类) String jsonStr = gson.toJson(user,User.class); // fromJson 将json字符串转为bean对象 User user = gson.fromJson(jsonStr); List<WealthMangeBean> wealthManageBeanList = new ArrayList<wealthManageBean>(); list.add(wealthManageBeanList); // **序列化List** String jsonStr2 = gson.toJson(wealthManageBeanList); // **反序列化成List时需要使用到TypeToken来说明list里面的对象** List<wealthManageBean> wealthManageBeanList2 = gson.fromJson(jsonStr2, new TypeToken<List<WealthManageBean>>(){}.class);
通过GsonBuilder构建自定义Gson对象
Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() //不对没有用@Expose注解的属性进行操作 .enableComplexMapKeySerialization() //当Map的key为复杂对象时,需要开启该方法 .serializeNulls() //当字段值为空或null时,依然对该字段进行转换 .setDateFormat("yyyy-MM-dd HH:mm:ss:SSS") //时间转化为特定格式 .setPrettyPrinting() //对结果进行格式化,增加换行 .disableHtmlEscaping() //防止特殊字符出现乱码 .registerTypeAdapter(User.class,new UserAdapter()) //为某特定对象设置固定的序列或反序列方式,自定义Adapter需实现JsonSerializer或者JsonDeserializer接口 .create();
2、实现Gson对复杂Map的处理
enableComplexMapKeySerialzation()
Gson gson = new GsonBuilder().enableComplexMapKeySerialzation();//设定能够针对复杂的Map类型进行序列化和反序列化,如果不设置这个序列化的结果会出现错误 Map<WealthManageBean,WealthManageBean> map = new HashMap<WealthManageBean,WealthManageBean>(); map.put(wealthManageBean,wealthManageBean); Gson gson4 = new GsonBuilder().create(); String json5 = gson4.toJson(map); Object json6 = gson4.fromJson( json5, new TypeToken<Map<WealthManageBean,WealthManageBean>>(){} .getType());
3、Gson的注解
@Expose/@Expose(serialize = false)/@Expose(deserialize = false)
//@Expose中serialize和deserialize属性是可选的,默认两个都为true。 //如果serialize为true,调用toJson时会序列化该属性, //如果deserialize为true,调用fromJson生成Java对象时不会进行反序列化
@SerializedName注解 能将制定字段在序列化成json时候的名称
@SerializedName("w") private int width;