在Java(Jackson)中将一个JSON属性映射到两个不同的字段

5
这是我尝试过的,但是在firstName字段上获取到了null。
@Data
@NoArgsConstractor
@AllArgsConstructor
public class User{

      @JsonProperty("name")
      private String name;
      @JsonProperty("age")
      private int age;

      private String firstName;

      public void setFirstName(String name){
        this.firstName = this.name.substring(4,10);
      }
}

假设我有一个JSON需要映射到上面的POJO,问题是我想同时使用@JsonProperty("name")来表示name和firstName,但是要稍微不同地设置firstName。

  1. 你的代码中调用了setFirstName()函数吗?
  2. 我不会使用子字符串来分配名字,因为名字的长度可能会有很大的差异。
- mayha
不,这只是一个例子,我想要做的是保存初始内容,但使用名称字段。或者可能保存其缩略版本。 - Ipkiss
1个回答

5
您可以使用'JsonSetter'注释。
@Data
@NoArgsConstractor
@AllArgsConstructor
public class User{

      private String name;
      private String firstName;

      @JsonProperty("age")
      private int age;            

      @JsonSetter("name")
      public void setNames(String name){
        this.name = name;
        this.firstName = this.name.substring(4,10);
      }
}

注释已被取消弃用。 - user7294900

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接