本文共 2715 字,大约阅读时间需要 9 分钟。
Java对象和Json之间的互转,一般用的比较多的两个类库是Jackson和Gson,下面记录一下Gson的学习使用。
com.google.code.gson gson 2.3.1
toJson();fromJson();
// 使用new方法Gson gson = new Gson();// toJson 将bean对象转换为json字符串String jsonStr = gson.toJson(user, User.class);// fromJson 将json字符串转为bean对象Student user= gson.fromJson(jsonStr, User.class);// **序列化List**String jsonStr2 = gson.toJson(list);// **反序列化成List时需要使用到TypeToken getType()**ListretList = gson.fromJson(jsonStr2,new TypeToken
>(){}.getType());
//serializeNulls()是GsonBuilder提供的一种配置,当字段值为空或null时,依然对该字段进行转换Gson gson = new GsonBuilder().serializeNulls().create();
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();
例如:Gosn对复杂Map的处理时需要用到其中的 enableComplexMapKeySerialization() 配置:
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create(); //开启复杂处理Map方法Map
, String> map = new HashMap
, String>();// TODO 向map中添加数据String jsonStr = gson.toJson(map); //toJsonMap
, String> resultMap = gson.fromJson(jsonStr,new TypeToken
注意:如果Map的key为String,则可以不使用GsonBuilder的enableComplexMapKeySerialization()方法,或者直接new Gson();
public class User { @Expose private String firstName; @Expose(serialize = false) private String lastName; @Expose(deserialize = false) private String emailAddress; private String password;}
@SerializedName("w") private int width;
转载地址:http://jfhlf.baihongyu.com/