Jackson进行JSON解析和序列化
Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。
@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。
04-27 00:46:51.160 17190-20868/link.ebbinghaus.planning W/System.err: Caused by: java.text.ParseException: Failed to parse date ["1461689198000']: Invalid time zone indicator '9' (at offset 0)
json解析之Gson使用注意:
在Java中处理JSON格式的数据时,Google Gson是个不错的选择,用起来挺方便的,也有一定灵活性。
1、Date格式问题:
异常:Invalid time zone indicator '0'
原因:在使用Gson解析json数据的时候,如果json中含有Date格式的数据,json会用默认的格式解析,如果格式不一样则会导致解析出错。
解决办法:在创建GsonBuilder过程中调用GsonBuilder.setDateFormat("yyyy-MM-dd HH:mm:ss")指定一个固定的格式即可。
2、序列化忽略指定属性
给字段加上transient修饰符(简单推荐)
其他方法:(不推荐,忽略的只是个别字段,大部分字段需要加注解)
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();
使用@Expose注解,没有被@Expose标注的字段会被排除
还有好多方法。。。
3、排除null字段
null字段,默认就不会序列化
要想序列化null字段,需要显示的进行设置
Gson gson = new GsonBuilder().serializeNulls().create();
另外如果使用Jackson进行JSON解析和序列化,Jackson也提供了一系列注解,方便对JSON序列化和反序列化进行控制
@JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。
@JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。