首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)不工作

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)不工作
EN

Stack Overflow用户
提问于 2016-06-08 16:38:44
回答 1查看 16.2K关注 0票数 7

在序列化DataType类时,会忽略dbOptions,但会使用它的值打印dataType。

注意:我只需要在序列化而不是反序列化期间忽略这些属性。

代码语言:javascript
运行
复制
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "dataType")
@JsonSubTypes(value = {
    @JsonSubTypes.Type(value = DefaultType.class, name = "Default"),
    @JsonSubTypes.Type(value = NumberRangeType.class, name = "NumberRange"),

})
public abstract class DataType {

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
protected String dataType;

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
protected String dbOptions;

public String getDataType() {
    return dataType;
}

public void setDataType(String dataType) {
    this.dataType = dataType;
}

public String getDbOptions() {
    return dbOptions;
}

public void setDbOptions(String dbOptions) {
    this.dbOptions = dbOptions;
}


abstract
public void compute() throws ParseException;

}

示例输出为:

代码语言:javascript
运行
复制
"options":{"dataType":"NumberRange","id":"1","min":0,"max":30}

我不希望在输出中打印dataType

EN

回答 1

Stack Overflow用户

发布于 2016-06-15 07:22:01

这种意想不到的行为似乎是一个错误(参见https://github.com/FasterXML/jackson-databind/issues/935)。所以你必须绕过这个问题。其中一个解决方案在这里解释了http://www.davismol.net/2015/03/21/jackson-using-jsonignore-and-jsonproperty-annotations-to-exclude-a-property-only-from-json-deserialization/

下面是后一个链接的示例,用于模拟@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)注释的预期行为。

代码语言:javascript
运行
复制
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.io.Serializable;


public class User implements Serializable {

  @JsonIgnore
  private String password;

  @JsonIgnore
  public String getPassword() {
    return password;
  }

  @JsonProperty
  public void setPassword(String password) {
    this.password = password;
  }
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37697359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档