上篇主要阅读了Json类的方法,针对java对象和字符串之间的转换。 这篇主要针对json的一些工具类行的功能进行阅读说明, 包括:
- json的注解
- json的格式化
- json异常处理
以上。
json的注解
json模块共提供了三个json相关注解,饭别是JsonField,JsonIgnore,ToJson他们的作用分别为:
- JsonField,定义pojo对象中要被转换为json字符串的属性的相关定义,比如可以定义默认值,输出格式。
- JsonIgnore, 针对一些特殊的值,可以通过这个注解来忽略输出。
- ToJson,作用与类的注解,如果添加改注解,可以根据注解的定义调用用户自定义的json输出方法,如果只是使用改注解但是没有设置value值,则默认调用pojo对象的toJson方法,如果没有改方法,则相当与该注解无效,将调用系统默认方法来输出json。
change from 2015-01-02
JsonFormat json格式化处理
- JsonFormat提供了json输出的格式设置,默认提供了5中输出格式:compact,full,nice,forLook,tidy;这几中格式的意思官方文档说明的很明白了,自行查看吧。 默认不设置格式的时候用的是compact格式。
- JsonFormat基本上是一个POJO类,包含了一些属性,以及属性的set和get方法。所以这个类相对比较容易理解了。 格式化设置的范围主要包括:日期格式,数字格式,缩进列数,是不是换行,是不是忽略空值;也可以设置只输出那些属性,或者部署出哪些属性
- JsonRenderImpl 在输出json的时候会使用JsonFormat对象进行格式控制,比如:
-
在输出日期类型数据的时候调用日期格式来格式化日期:
if (obj instanceof Date) { DateFormat df = format.getDateFormat(); if (df != null) { string2Json(df.format((Date)obj)); flag = false; } }
-
在输出每个属性的时候输出JsonFormat中定义好的分割符:
writer.append(format.getSeparator());
-
在对象为空的时候判断是否需要输出:
private boolean isIgnore(String name, Object value) { if (null == value && format.isIgnoreNull()) return true; return format.ignore(name); }
-
JsonException
JsonException 有4个构造函数,其中后面两个,详细定义了在读取json转换为java对象的时候,调用改Exception输出json的第几行,第几列不规范不是标准的json