springboot返回json时自动忽略掉对象属性注解方式

/ Java / 没有评论 / 2030浏览

springboot返回json时自动忽略掉对象属性注解方式

Jackson忽略指定属性

import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;

public class TestEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    private String name;

    @JsonIgnore
    private String sex;

    // 省略get set
}

FastJson忽略指定属性

import java.io.Serializable;
import com.alibaba.fastjson.annotation.JSONField;

public class TestEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id;

    private String name;

    @JSONField(serialize = false)
    private String sex;

    // 省略get set
}

自定义注解,指定显示属性

实体类

import java.io.Serializable;
import com.dty.vems.common.result.Result.ResponseResult;
import com.fasterxml.jackson.annotation.JsonView;

public class TestEntity implements Serializable {

    public interface Result extends ResponseResult {};

    @JsonView(Result.class)
    private String id;

    @JsonView(Result.class)
    private String name;

    @JsonView(Result.class)
    private String sex;

    // 省略 get set
}

控制层 – 直接返回json对象

@RequestMapping("test1")
@JsonView(Result.class)
public Result testRest1() {
    return Result.success(new TestEntity("id", "name", "sex"));
}

控制层 – 直接返回Model对象

@RequestMapping(path = "/test2")
public String getUser(Model model) {

    model.addAttribute("user", new TestEntity("id", "name", "sex"));
    model.addAttribute(JsonView.class.getName(), User.WithoutPasswordView.class);
    
    return "testView";
}

注意:如果实体类对象的属性中上添加了Jackson注解、Fastjson注解和自定义注解时,自定义注解会失效