json 常用注解
2015-11-03 21:14
609 查看
一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换;这样,就需要用到注解;
Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途;常见的使用如下:
1 排除属性
@JsonIgnore,一般标记在属性或方法上;作用于序列化与反序列化;
@JsonIgnoreProperties,如果是代理类,由于无法标记在属性或方法上,所以,可以标记在类声明上;也作用于反序列化时的字段解析;
2 属性别名
@JsonProperty,序列化/反序列化都有效;
3 属性排序
@JsonPropertyOrder,注释在类声明中;
4 属性格式转换
使用自定义序列化/反序列化来处理;
@JsonSerialize,序列化;
@JsonDeserialize,反序列化;
注意:在使用hibernate的时候,查询数据库后产生的实体类是个代理类,这时候转换JSON会报错;
解决方法有两种:
1)设置FAIL_ON_EMPTY_BEANS属性,告诉Jackson空对象不要抛异常;
mapper.disable(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS);
2)使用@JsonIgnoreProperties注解
在实体类声明处加上@JsonIgnoreProperties(value ={"hibernateLazyInitializer", "handler"})注解;
建议使用@JsonIgnoreProperties注解,这样生成的JSON中不会产生多余的字段;
5 父/子关联
@JsonManagedReference,放在父亲类中;
@JsonBackReference,放在孩子类中;
6 去掉包装
@JsonUnwrapped,意思如下:
Ability to map JSON like
{
"name" : "home",
"latitude" : 127,
"longitude" : 345
}
to classes defined as:
class Place {
public String name;
@JsonUnwrapped
public Location location;
}
class Location {
public int latitude, longitude;
}
参考: http://wiki.fasterxml.com/JacksonAnnotations http://www.cowtowncoder.com/blog/archives/2011/10/entry_463.html http://www.07net01.com/linux/Jacksonzhujiexuexicankao_44238_1356358422.html
Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途;常见的使用如下:
1 排除属性
@JsonIgnore,一般标记在属性或方法上;作用于序列化与反序列化;
@JsonIgnoreProperties,如果是代理类,由于无法标记在属性或方法上,所以,可以标记在类声明上;也作用于反序列化时的字段解析;
2 属性别名
@JsonProperty,序列化/反序列化都有效;
3 属性排序
@JsonPropertyOrder,注释在类声明中;
4 属性格式转换
使用自定义序列化/反序列化来处理;
@JsonSerialize,序列化;
@JsonDeserialize,反序列化;
注意:在使用hibernate的时候,查询数据库后产生的实体类是个代理类,这时候转换JSON会报错;
解决方法有两种:
1)设置FAIL_ON_EMPTY_BEANS属性,告诉Jackson空对象不要抛异常;
mapper.disable(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS);
2)使用@JsonIgnoreProperties注解
在实体类声明处加上@JsonIgnoreProperties(value ={"hibernateLazyInitializer", "handler"})注解;
建议使用@JsonIgnoreProperties注解,这样生成的JSON中不会产生多余的字段;
5 父/子关联
@JsonManagedReference,放在父亲类中;
@JsonBackReference,放在孩子类中;
6 去掉包装
@JsonUnwrapped,意思如下:
Ability to map JSON like
{
"name" : "home",
"latitude" : 127,
"longitude" : 345
}
to classes defined as:
class Place {
public String name;
@JsonUnwrapped
public Location location;
}
class Location {
public int latitude, longitude;
}
参考: http://wiki.fasterxml.com/JacksonAnnotations http://www.cowtowncoder.com/blog/archives/2011/10/entry_463.html http://www.07net01.com/linux/Jacksonzhujiexuexicankao_44238_1356358422.html
相关文章推荐
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- .Net中的json操作类用法分析
- C#操作 JSON方法汇总
- JavaScript中字符串(string)转json的2种方法
- js Object2String方便查看js对象内容