gpt4 book ai didi

json - json 文件中的 Camel Case 属性名称未映射到 Java 对象

转载 作者:行者123 更新时间:2023-12-04 18:37:46 26 4
gpt4 key购买 nike

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

mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

通过此 sortable_list 被映射到 POJO 中的适当属性,但 itemsRequired 被忽略。如果我删除 PropertyNamingStrategy,则 itemsRequired 有效,而 sortable_list 无效。如果我想让两者一起工作应该怎么做?

我正在使用 fasterxml 库。我也尝试过 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

最佳答案

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

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

关于json - json 文件中的 Camel Case 属性名称未映射到 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com