当前位置: 首页 > 知识库问答 >
问题:

Jackson:我怎么能忽略getter而只解析setter呢?[副本]

宰父淳
2023-03-14
public class TestJson {
    private String s1, s2;

    @JsonIgnore
    public String getS1() {
        return s1;
    }

    @JsonIgnore(false)
    public void setS1(String s1) {
        this.s1 = s1;
    }

    public String getS2() {
        return s2;
    }

    public void setS2(String s2) {
        this.s2 = s2;
    }

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        TestJson bean = new TestJson();
        bean.setS1("test1");
        bean.setS2("test2");
        System.out.println(mapper.writeValueAsString(bean));

        String json = "{\"s1\":\"test1\",\"s2\":\"test2\"}";
        bean = mapper.readValue(json, TestJson.class);
        System.out.println("s1=" + bean.getS1());
        System.out.println("s2=" + bean.getS2());
    }
}
s1=test1
s2=test2
s1=null
s2=test2

共有1个答案

汪建德
2023-03-14

您可以将@jsonpropertyjsonproperty.access.write_only一起使用

来自文档

访问设置,该设置意味着可能只为反序列化写入(设置)属性,而不会在序列化上读取(获取)属性,即序列化中不包括属性的值。

public class TestJson {

    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String s1;
    private String s2;


    public String getS1() {
        return s1;
    }

    public void setS1(String s1) {
        this.s1 = s1;
    }

    public String getS2() {
        return s2;
    }

    public void setS2(String s2) {
        this.s2 = s2;
    }
}
public class TestJson {
    private String s1;
    private String s2;


    @JsonIgnore
    public String getS1() {
        return s1;
    }

    @JsonProperty
    public void setS1(String s1) {
        this.s1 = s1;
    }

    public String getS2() {
        return s2;
    }

    public void setS2(String s2) {
        this.s2 = s2;
    }
}
 类似资料:
  • 利用 getter/setter 可以拦截操作对象的属性,在设置属性前或获取属性前做一些事情。 1. getter get语法将对象属性绑定到查询该属性时将被调用的函数。(MDN) // 语法 var 对象 = { get 属性名() { // 做一些事情 balabala return 值; } }; getter 在获取一个属性时被调用,同时返回 getter 的返回

  • 我正在使用C 11和stl线程编写线程安全队列。WaitAndPop方法目前如下所示。我希望能够向WaitAndPop传递一些指示调用线程是否已被要求停止的东西。WaitAndPop如果等待并返回队列的一个元素,则应返回true,如果调用线程被停止,则应返回false。 有可能编写这样的代码吗?我习惯了Win32 WaitForMultipleObject,但找不到适用于这种情况的替代方案。 谢谢

  • 我试着用Java画一个长方形。我设置框架大小(800400)和可调整大小(假)矩形的x=50,y=50宽度=700高度=300。为什么不在中间呢?非常感谢。

  • Kotlin自动生成它的getters和settings,但是我从来没有引用过它们?另外,用Kotlin编写自定义getter/setter的正确方法是什么?当我说< code>myObj.myVar = 99时,我感觉< code>myVar是我正在直接访问的< code>myObj的公共字段。这里到底发生了什么?