@Transient方法导致错误“无法识别的字段(...),未标记为可忽略”

问题描述 投票:0回答:1

我正在序列化一个Java类,将其作为JSON对象传输到我的客户端。该类具有各种属性和一组@Transient方法,这些方法组合了这些属性的子集。瞬态方法没有任何变量来备份它们。

public class Person {
  private String firstName;
  private String lastName;

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String getLastName() {
    return lastName;
  }

  @Transient
  public String getFullName() {
    return firstName + " " + lastName;
  }
}

从服务器读取对象时,这很好。但是,当我尝试保存JSON对象时,它会导致瞬态方法出现此错误:

“无法识别的字段(...),未标记为可忽略”

我不想为瞬态属性引入变量,我仍然希望将瞬态方法的返回值从服务器传输到客户端。我怎样才能做到这一点?

我尝试的是这个,但我不确定,如果我完全理解@Json*注释的想法:

@Transient
@JsonProperty
public String getFullName() {
  return firstName + " " + lastName;
}

@JsonIgnore
public void setFullName(String fullName) {
  // Empty method
}

在我看来,拥有一个空的二传手并没有多大意义。但也许我假设有一个属性转移而没有代表它的属性,首先是错误的!?

json jackson resteasy transient
1个回答
0
投票

使用JsonIgnoreProperties注释:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {

来自文档:

定义在反序列化期间是否可以忽略任何无法识别的属性的属性。如果为true,则无法识别所有无法识别的属性(即,没有可接受它们的setter或创建者)将被忽略而不会发出警告(尽管仍会调用未知属性的处理程序,如果有的话)。对序列化没有任何影响。

也可以看看:

© www.soinside.com 2019 - 2024. All rights reserved.