jackson - 避免序列化 getter

问题描述

我有一个类,它有一些额外的用于派生值的 getter。当我用 jackson objectmapper 序列化它时,它也会写出该字段。有没有办法避免这种情况?

示例 -

public class CustomPath implements Serializable {

private String path;
private String name;
private String extension = ".txt";

@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
public CustomPath(@JsonProperty("path") String path,@JsonProperty("name") String name) {
this.path = path;
this.name = name;
}

public String getPath()
{ return this.path;}

public void setPath(String path)
{ this.path = path;}

public String getName()
{ return this.name;}

public void setName(String name)
{ this.name = name;}


public String getExtension()
{ return this.extension;}

public void setExtension(String extension)
{ this.extension = extension;}

public String getFullPath() //do not want to serialize this
{ return this.path +"/" + this.name + this.extension;}

}

像这样的类的 json 看起来像 -

{
   path: somepath
   name: somename
   extension: .txt
   fullPath: somepath/somename.txt

}

但我不想在上面的示例中序列化“fullPath”。有什么办法可以避免这种情况吗?

解决方法

您需要使用 @JsonIgnore 注释 getFullPath() 方法:

@JsonIgnore
public String getFullPath() // do not want to serialize this
{
    return this.path + "/" + this.name + this.extension;
}

然后 JSON 输出将如下所示:

{
  "path" : "somePath","name" : "someName","extension" : ".txt"
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...