用于将json字段绑定到POJO中具有不同名称的字段的注释

用于将json字段绑定到POJO中具有不同名称的字段的注释,json,spring,spring-boot,Json,Spring,Spring Boot,Java类(用作数据传输对象): 类资源还有一个名为id的字段,该字段具有不同的类型及其getter和setter,因此出现语法错误 class A extends Resource { private int id; public int getId() { return id; } // syntax error as getId() function already exists in Resource public void setId(int id) { thi

Java类(用作数据传输对象):

类资源还有一个名为
id
的字段,该字段具有不同的类型及其getter和setter,因此出现语法错误

class A extends Resource
{
   private int id;

   public int getId() { return id; }   // syntax error as getId() function already exists in Resource
   public void setId(int id) { this.id = id; }
}
由于上面的类是DTO,一个JSON响应(带有字段
id
)将映射到它,并且不能使用getId(),因此我想将该字段更改为
\u id
,并相应地更改getter和setter,并用一个注释将其标记为bind this to
id
field

注意:我使用的是spring boot。我尝试使用@JsonProperty注释,但没有成功。在春天这样做有注释吗

public A extends Resource {
    private int id;

    @JsonProperty("_id")
    public int getId() {
      return id;
    }

    @JsonProperty("id")
    public void setId(int id) {
      this.id = id;
    }
}

方法名称应该不同,因此jackson将其解析为不同的字段,而不是一个字段。

谷歌搜索发现了以下问题:。根据你的问题调整它

public class A extends B {
    private int id;

    public A(int id) {
        super.setId("id" + id);
        this.id = id;
    }

    @Override
    @JsonProperty("_id_")
    public String getId() {
        return super.getId();
    }

    @Override
    @JsonProperty("_id_")
    public void setId(String id) {
        super.setId(id);
    }

    @JsonProperty("id")
    public int getIntId() {
        return id;
    }

    @JsonProperty("id")
    public void setIntId(int id) {
        this.id = id;
    }
}

public class B {
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}
用这个测试它:

@RestController
public class TestController {
    @GetMapping("/test")
    public A test() {
        return new A(1);
    }
}
结果是:

{
  "_id_": "id1",
  "id": 1
}

@上面的JsonProperty(“id”)不起作用?不,它不起作用。当你说它不工作时,它仍然会寻找一个名为“id”的字段。。。是否引发了一些异常?你能提供一些关于它如何工作的见解吗?@JsonProperty没有像我提到的那样工作。它应该与Spring MVC或Spring Boot一起工作吗?另外,我不能有一个getId()函数,因为在超类中有一个函数getId()具有不同的返回类型,或者只是将两个不同的getter/setter对绑定到一个变量,正如我在前面的注释中给出的链接上的注释一样,它们使用了相同的东西@JsonProperty。这对我不起作用。你需要找到答案,解释为什么它不起作用,而不是你能用什么来解决这类问题。