fastjson过滤失不需要返回的字段
在项目中,后端盘问数据库返回的字段需要过滤传给前端,或者只需要一部分字段
要领一 new
newVO,DTO类,实体类来解决 (太老土的做法)
要领二 使用transient关键字 (暗码,和身份证号字段多使用)
把需要过滤失字段使用transient关键字修饰,这样在挪用JSON的toString要领时,,被transient修饰的字段不会呈此刻最终的json字符串中
例子: private transient String id; (在多个接口中使用这个字段 ,如果不是都要过滤这个字段时候, 就不适合使用)
要领三 使用注解@JSONField(serialize=false) 感化和使用情况同要领二
例子: @JSONField(serialize=false)
private String id;
要领四 使用fastjson属性过滤器SimplePropertyPreFilter (保举使用 更灵活)
SimplePropertyPreFilter实现了PropertyPreFilter
例子: Student 相当于VO,DTO类或者实体类
要输出字段为空的情况 增加一个参数 SerializerFeature.WriteMapNullValue
public class Student { /** 学号 */ private long id; private String name; private int age; /** 年级 */ private int grade; /** 专业 */ private String major; /** 学校 */ private String school; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public Student(long id, String name, int age, int grade, String major, String school) { super(); this.id = id; this.name = name; this.age = age; this.grade = grade; this.major = major; this.school = school; } }
Studentpublic class Test { public static void main(String[] args) { List<Student> students = Arrays.asList( new Student(200123,"苏明",20,1,"土木工程",null), new Student(200456,"张阿凡",21,2,"机械工程",null), new Student(200789,"范总",20,3,"计算机工程","姑苏产业大学") ); //students模拟数据库查出来的数据 //指定要返回的字段 没有在里面的字段就不会返回 到达过滤的效果 String resultStr=filterFieldsJson(students,Student.class,"name","grade","school"); System.out.println(resultStr); } //过滤要领 字段为空也输出 增加一个参数 SerializerFeature.WriteMapNullValue public static String filterFieldsJson(Object src, Class<?> clazz, String... args) { SimplePropertyPreFilter filter = new SimplePropertyPreFilter(clazz, args); return JSON.toJSONString(src, filter,SerializerFeature.WriteMapNullValue); } }
fastjson过滤失不需要返回的字段
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32541.html
- 上一篇: done: function(value
- 下一篇:0022 CSS书写规范