我有以下课程:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Topic {
private List<Comment> comments = new ArrayList<>();
private List<User> users = new ArrayList<>();
@JsonCreator
public Topic(@JsonProperty("success") boolean success,
@JsonProperty("response_comments") List<ResponseComment> responseComments,
@JsonProperty("response_users") List<ResponseUser> responseUsers) {
if (success) {
comments = Util.resolveComments(responseComments);
users = Util.resolveUsers(responseUsers); //some logic
}
}
}
当我尝试反序列化JSON时,它会抛出:
找不到名称为'comments'的创建者属性(在com.test.domain.mapper.Topic类中)
我不想在json中填充comments
,只是在属性的构造函数中。但是,如果我写下一个参数:
@JsonProperty("success") boolean success,
@JsonProperty("response_comments") List<ResponseComment> responseComments,
@JsonProperty("response_users") List<ResponseUser> responseUsers,
@JsonProperty("comments") Object a,
@JsonProperty("users") Object a
一切正常。
答案 0 :(得分:14)
经过几个小时的单元测试和复制课程后,我找到了一个解决方案。我不想承认,但Lombok @AllArgsConstructor中的问题。对不起,我没有说明我一直使用龙目岛。在@AllArgsConstructor
中没有Topic
,所有工作都按预期进行。但是,即使使用@JsonCreator
,它也存在于其他类中并且有效。我很抱歉你的时间。
答案 1 :(得分:11)
使用lomback&#39; @AllArgsConstructor和jackson 2.8.7。 将jackson升级到2.8.8并解决问题。
答案 2 :(得分:2)
在对此工作几个小时并确认@Feeco所经历的行为后,我能够通过将Lombok从v1.16.16升级到v1.16.20来解决此问题。
答案 3 :(得分:1)
您应该将@JsonIgnoreProperties(ignoreUnknown = true)
添加到创建者方法/主题构造函数。