我发现了以下问题,每当我的JSON字符串中有一个“is”字段时,如果没有额外的@JsonProperty标记,Jackson就无法检测到它。在将此作为Bug报告之前,我想确保这不是由我引起的。UnmappedPropertyHandler
接口只是一个带有@JsonAnySetter的方法,用于报告任何未知字段,只要“is”字段没有在()之间使用@JsonProperty和它们的名称进行注解,它就会对这些字段执行此操作。
public class Event implements UnmappedPropertyHandler {
private boolean expired, isCommunity, isPersonal, active;
public boolean isExpired() {
return expired;
}
public boolean isCommunity() {
return isCommunity;
}
public boolean isPersonal() {
return isPersonal;
}
public boolean isActive() {
return active;
}
我正在解析的JSON字符串的片段。
{
"id": "5c7cb0d00000000000000000",
"activation": "2022-06-01T16:00:00.000Z",
"startString": "-11d 17h 33m 47s",
....
"isPersonal": true,
"isCommunity": true,
....
}
2条答案
按热度按时间t2a7ltrp1#
Jackson显然会扫描您传入的类中的getter和setter,然后使用这些方法进行序列化和反序列化。
“Get”、“Set”、“is”被删除,这些方法中剩余的内容将用作Json字段。
因此,您的“isCommunity”将更改为“community”,依此类推。
m528fe3b2#
默认情况下,Jackson将读取以
get
或set
开头的方法,因此您必须调用方法getIsCommunity
和setIsCommunity
,它会将值Map到正确的字段,尽管我不确定这是否比注解更好。