当前位置: 首页 > 知识库问答 >
问题:

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

元昊苍
2023-03-14

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(),我想将字段更改为_id_,并相应地更改getter和setter,并用一个注释标记它,说明bind this toid字段。

注意:我用的是Spring靴。我尝试使用@JSONProperty注释,但这不起作用。Spring做这件事有注释吗?

共有1个答案

孙莫希
2023-03-14

谷歌一下,发现了这个问题: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
}
 类似资料:
  • 问题内容: Jackson json注释中以下jax-b注释的等效方式是什么? 我需要生成json而不是xml,并且需要了解在jax-b中等效表示的常规jackson批注。 重命名字段。 使用getter代替字段。 如果json / xml元素名称是Java保留字(例如“ ”,“ ”,“ ”等),则这些功能尤其重要。 因此我们必须将POJO字段分别命名为“ new ”,“ _ public ”,“

  • 我目前正在使用Jackson的XmlMapper和ObjectMapper。我想将该字符串映射到一个POJO(我想我正确地使用了该术语),该POJO有一个与JSON字符串字段同名的私有字段。XML字符串对于同一字段/属性有不同的名称,我想使用JSON字段名称。 我还想从本质上“忽略”该字段(同时保留它),并将其存储为类似于JsonNode的内容,因为该字段的值可以是一些复杂的嵌套值,而没有已知的形

  • 我正在探索GraphQL,想知道是否有任何重命名响应字段的方法,例如我有一个POJO与这些字段 GraphQL查询: 我的回答是这样的 我是否可以将名称字段重命名为类似用户名的名称,以便我的回答如下

  • 我想将spring date字段绑定到pojo类并返回日期 DateOfBornd的类型为java.sql.Date。现在,当我将日期从spring形式传递给函数setDateOfBorning时,它取空值 例如,在register.jsp(注册表单)中,我有specific字段 java(Pojo类) 当我调用getDateOfBorne()时 返回: 预期的 我得到的信息: 请帮助我如何转换这

  • 我正在努力用本地化反序列化世界天气在线API结果。 是否有更好、更简单的解决方案,只为lang对象编写一个自定义反序列化器,并允许GSON自动反序列化其余数据?

  • 我对使用Jackson还是个新手,我正在尝试遵循我的团队的模式来反序列化我们的JSON。现在我遇到了一个问题,当一个字段名与JSON属性不匹配时。 工作示例: 如果JSON属性是hasProfile,它工作得很好,但是如果是has_profile(这是我们的客户端正在编写的内容),它就不工作了,并且我得到一个错误:。我尝试向hasProfile添加JsonProperty注释,但仍然不起作用: 我