当前位置: 首页 > 面试题库 >

如何将JSON字段名称映射到不同的对象字段名称?

邹玮
2023-03-14
问题内容

Jackson json注释中以下jax-b注释的等效方式是什么?

我需要生成json而不是xml,并且需要了解在jax-b中等效表示的常规jackson批注。

  1. 重命名字段。
  2. 使用getter代替字段。

如果json / xml元素名称是Java保留字(例如“ new”,“ public”,“ static”等),则这些功能尤其重要。

因此我们必须将POJO字段分别命名为“ new ”,“ _ public ”,“ _ static”等,

但请使用jax-b批注在生成的XML(和json)元素中将其重命名为“ new”,“ public”,“ static”等。

重命名字段

@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true)
    protected String address;
    @XmlElement(name = "contractor")
    protected boolean _restricted_ ;
    @XmlElement(name = "new")
    protected boolean _new_ ;
}

重定向到使用属性获取器 (我认为这是在jax-b中完成的方式)

@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
    protected String name;
    protected String address;
    protected boolean _restricted_ ;
    protected boolean _new_ ;

    @XmlElement(required = true)
    protected String getName() {return name;}
    @XmlElement(required = true)
    protected String getAddress() {return address;}
    @XmlElement(name = "contractor")
    protected boolean getRestricted() {return _restricted_;}
    @XmlElement(name = "new")
    protected boolean getNew(){return _new_;}
}

问题答案:

可能有点晚了,但是无论如何。

您可以重命名一个属性,只需添加

@JsonProperty("contractor")

默认情况下,Jackson使用getter和setter进行序列化和反序列化。

有关更多详细信息,请访问:http :
//wiki.fasterxml.com/JacksonFAQ



 类似资料:
  • 我有一个非常标准的Java POJO。让我们称之为狗: 狗java有一系列字段。在Java中,约定说字段名应该以小写开头。这意味着我有: 公共字符串名称 公共字符串狗型 公共弦重量 同时,我对我的JSON格式有一个要求,即JSON成员(名称、dogType和权重)的开头都要用大写字母书写,即名称、dogType和权重。 我在利用杰克逊。 如果我使用下面的标准序列化代码,我得到的JSON成员名称与它

  • Java类(用作数据传输对象): 类资源还有一个名为的字段,它的getter和setter具有不同的类型,因此出现语法错误。 由于上面的类是一个DTO,一个JSON响应(带有字段)将映射到它,并且不能使用getId(),我想将字段更改为,并相应地更改getter和setter,并用一个注释标记它,说明bind this to字段。 注意:我用的是Spring靴。我尝试使用@JSONProperty

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

  • 我在寻找更“改进的方法”来实现这一点,我有一种方法,从一个id中获取所有记录,然后“映射”到一个类中,我有大约200个“标记”要映射,这将是一个非常长的if链。。。例子:

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

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