android 杰克逊 @JsonIgnore 属性

Posted

技术标签:

【中文标题】android 杰克逊 @JsonIgnore 属性【英文标题】:android Jackson @JsonIgnore property 【发布时间】:2017-09-03 13:24:41 【问题描述】:

在我的 API 响应中,我有两个字段:event_dateevent_datetimeevent_date 返回 ISO 日期 格式,在我的 android 类中,我将此变量设置为 String 类型。我想忽略 Jackson 中的这个属性,因为它会引发类型不匹配的错误。请注意,我只想在响应中忽略此字段。我想将此字段用作请求参数。

我尝试了@JsonIgnore 注释,但它不适合我。有没有其他方法可以忽略 Jackson 中的这个变量?

@JsonIgnore
private String eventDate;
private String eventDateTime;

@JsonIgnore
public String getEventDate() 
    return eventDate;


@JsonProperty("event_date")
public void setEventDate(String eventDate) 
    this.eventDate = eventDate;


@JsonProperty("event_datetime")
public String getEventDateTime() 
    return eventDateTime;


public void setEventDateTime(String eventDateTime) 
    this.eventDateTime = eventDateTime;

【问题讨论】:

【参考方案1】:

删除@JsonProperty("event_date")。我认为这是造成问题的原因。

【讨论】:

我必须使用它,因为我的属性名称是 event_date 而不是 eventDate 但是你想忽略它。你是怎么用它的? 我只想在回应中忽略它。我将此字段用于请求参数。无论如何,我得到了解决方案。谢谢你的回答:)【参考方案2】:

这是因为你使用了来自 org.fasterxml.jackson 的 @JsonIgnore

替换你的导入:

import org.fasterxml.jackson.annotate.JsonIgnore;

import org.codehaus.jackson.annotate.JsonIgnore;

【讨论】:

我使用过 com.fasterxml.jackson.core:jackson-annotations:2.8.3 库。所以我不能导入你指定的类 如果你使用 jersey,org.codehaus.jackson 默认会在你的项目中

以上是关于android 杰克逊 @JsonIgnore 属性的主要内容,如果未能解决你的问题,请参考以下文章

强制杰克逊在没有 JsonIgnore 的情况下忽略 isEmpty

Spring @JsonIgnore 不起作用

杰克逊:我怎么能忽略getter但解析setter? [复制]

迁移到 Spring Boot 2.2.0 @JsonIgnore 不起作用

杰克逊阵列到 Pojo 不只在 Android 上工作

杰克逊没有为 android.graphics.Bitmap 找到合适的构造函数