除非使用@JsonProperty进行注解,否则Jackson无法识别“is”字段

mnemlml8  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(149)

我发现了以下问题,每当我的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,
  ....
}
t2a7ltrp

t2a7ltrp1#

Jackson显然会扫描您传入的类中的getter和setter,然后使用这些方法进行序列化和反序列化。
“Get”、“Set”、“is”被删除,这些方法中剩余的内容将用作Json字段。
因此,您的“isCommunity”将更改为“community”,依此类推。

m528fe3b

m528fe3b2#

默认情况下,Jackson将读取以getset开头的方法,因此您必须调用方法getIsCommunitysetIsCommunity,它会将值Map到正确的字段,尽管我不确定这是否比注解更好。

相关问题