JSONArray过滤
说明
将⼀个List ResponBody到前端页⾯报错一朵浪花
原因
TProjectXXX实体⾥⾯存在OneToMany的属性结婚四句
解决办法
使⽤SimplePropertyPreFilter过滤,只留下我需要的字段
/**
* 第⼀种:在对象响应字段前加注解,这样⽣成的json也不包含该字段。权衡是什么意思
*/
妈妈抱>鱼鱼雅雅@JSONField(rialize=fal)
private String name;
/**
* 第⼆种:在对象对应字段前⾯加transient,表⽰该字段不⽤序列化,即在⽣成json的时候就不会包含该字段了。
*/
private transient String name;
/**
* 第三种:使⽤fastjson的拦截器
*/
PropertyFilter profilter =new PropertyFilter(){
@Override
public boolean apply(Object object, String name, Object value){
if(name.equalsIgnoreCa("last")){
//fal表⽰last字段将被排除在外
return fal;
}
return true;
}狩猎工具
};
json = JSONString(ur, profilter);
安徽的名茶
System.out.println(json);
/**
* 第四种,直接填写属性
*/
SimplePropertyPreFilter filter =new SimplePropertyPreFilter(TTown.class,"id","townname");
1. @Transient
@Transient表⽰该属性并⾮⼀个到数据库表的字段的映射,ORM框架将忽略该属性;
如果⼀个属性并⾮数据库表的字段映射,就务必将其标⽰为@Transient,否则ORM框架默认其注解为@Basic;//表⽰该字段在数据库表中没有
@Transient
public int getAge() {
五个月宝宝 return 1+1;
}
Jackson相关:
2. @JsonIgnoreProperties
此注解是类注解,作⽤是json序列化时将java bean中的⼀些属性忽略掉,序列化和反序列化都受影响。
3. @JsonIgnore
此注解⽤于属性或者⽅法上(最好是属性上),作⽤和上⾯的@JsonIgnoreProperties⼀样。
4. @JsonFormat
此注解⽤于属性或者⽅法上(最好是属性上),可以⽅便的把Date类型直接转化为我们想要的模式,⽐如@JsonFormat(pattern =“yyyy-MM-dd HH-mm-ss”)
5. @JsonSerialize
此注解⽤于属性或者getter⽅法上,⽤于在序列化时嵌⼊我们⾃定义的代码,⽐如序列化⼀个double时在其后⾯限制两位⼩数点。
6. @JsonDerialize
此注解⽤于属性或者tter⽅法上,⽤于在反序列化时可以嵌⼊我们⾃定义的代码,类似于上⾯的@JsonSerialize