java开发中常用到JSON传递对象数据,并转换数据为对象。
那么哪种JSON工具更方便我们操作?
gson
Jackson
用下来比较推荐Jackson。这个gson操作比较麻烦:
对比一:
class EventInfo {
private Date startTime;
private Date endTime;
private long start;
private long end;
}
我想用startTime和endTime一个Date类型的数据,然后,返回的时候需要同样的字段名称,但是,要是long的值。
Jackson:
class EventInfo {
@JsonIgnore
private Date startTime;
@JsonIgnore
private Date endTime;
@JsonProperty(value = "startTime")
private long start;
@JsonProperty(value = "endTime")
private long end;
}
这样,我就可以先用属性startTime接受数据,在转为long的start,在输出的时候,使用忽略标记标识startTime,再把start标记输出为名称是startTime的。就完成了不同类型输入输出,但是同名的问题
而gson这么做会报错
class EventInfo {
@Expose(serialize=false)
private Date startTime;
@Expose(serialize=false)
private Date endTime;
@SerializedName(value = "startTime")
private long start;
@SerializedName(value = "endTime")
private long end;
}
运行中,报错,这个startTime已存在
对比二:空值属性
这个EventInfo对象,如果属性startTime的值是null,那么使用gson的toJsonStr()方法后,这个startTime属性都没有
使用Jackson,则会是"startTime":null
以上是一点点使用感受,没有深入的去了解内部提供的方法。我想说的是,使用默认最简单的实例方法,来对对象进行转换工作时,Jackson更贴合实际开发需求