3

我有一个 json 对象,其属性名称如下:itemsRequired, sortable_list. 在我的 ObjectMapper 中,我有

mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

随着这sortable_list被映射到 POJO 中的适当属性,但itemsRequired被忽略。而如果我删除PropertyNamingStrategy, 则itemsRequired可以,sortable_list但不能。如果我想让两者一起工作应该怎么做?

我正在使用 fastxml 库。我也尝试过 codehaus 的 jackson,结果相同。


更新:POJO如下,

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(Include.NON_NULL)
public class CreateList extends Header {
    private String question;
    private String placeholder;
    private String help;
    private int itemsRequired;
    private List<String> list;

    // Getter and Setter methods
}

而 JSON 是,

"create": {
    "heading": "Activities Available to You",
    "question": "List at least four activities at school and in your community that you may want to try out.\n",
    "placeholder": "List an activity",
    "help": "You can only have 10 list items",
    "list": [],
    "items_required": 4
  }

如果我有上面的 JSON,一切正常。但是当我将 JSON 更改为时,事情不起作用,

"create": {
    "heading": "Activities Available to You",
    "question": "List at least four activities at school and in your community that you may want to try out.\n",
    "placeholder": "List an activity",
    "help": "You can only have 10 list items",
    "list": [],
    "itemsRequired": 4
  }

itemsRequired 在后一种情况下被忽略。

我希望它在这两种情况下都能工作,无论它被命名为items_required还是itemsRequired.

4

2 回答 2

0

正如建议的那样,您可能应该对不想修改的条目使用显式注释。我不知道为什么上面的代码不起作用:它似乎应该。您使用 Jackson 2.x 版本(com.fasterxml 包)也是正确的;尝试使用较旧的 1.x 版本没有任何好处。

您可能想要提交错误报告:这可能是一个错误。但是要知道这一点,需要一些示例代码;也许这个问题还有另一种解释。

于 2013-08-23T20:36:44.957 回答
0

您可以使用@JsonProperty。如果您不喜欢向目标类添加注释的想法,则可以始终使用Mixins,如果您希望很少使用它们作为蛇案例和其他 camelCase。因为 mixins 允许您在不实际编辑目标类的情况下向类添加属性名称,主要是在第三方课程的情况下。

但我更喜欢自定义命名策略

因为它允许您拥有可以解析两者的策略并且将使用 ObjectMapper 注册,这将帮助您避免维护 mixins、JsonProperty 等。

于 2016-11-05T20:42:00.720 回答