如何使用Firebase 1.0.2忽略对象模型的新字段

我正在使用Firebase依赖关系的最新版本,这是1.0.2,我有问题得到正确解析我的pojos。

事情是,在任何时候架构可以改变,但我不希望我的应用程序崩溃与此:

D / AndroidRuntime(14097):关闭虚拟机W / dalvikvm(14097):threadid = 1:线程退出与未捕获的exception(组= 0x40a451f8)E / AndroidRuntime(14097):致命例外:主E / AndroidRuntime(14097):com .firebase.client.FirebaseException:无法popup键入E / AndroidRuntime(14097):at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:213)

查看依赖关系树,我发现Firebase使用的是Jackson mapper 1.9.7,所以注解@JsonIgnoreProperties(ignoreUnknown = true")不是一个选项,而且对象映射器被封装在这个Firebase对象中,所以我不能配置DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES属性( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES为jackson1.9和之前)。

有什么办法设置这个属性,无论是作为一个类级别的注释或配置映射器或任何其他机制?

最好的解决方案是,Firebase 1.0.3开始使用Jackson 2.0,但不知道这是否是他们现在关心的事情。

注意:我已经考虑过排除传递的Jackson 1.9.7依赖,并添加Jackson 2.0,以便我可以访问这个ignoreUnknown特性,但是我不认为这是一个可行的选择,因为我会改变市长版本。

对于已转移到Google正式版Firebase(截至2016年5月29日)的用户,您可以使用@Exclude而不是@JsonIgnore或@JsonProperty。 这里是他们的文件的链接。

例:

 public class dataPacket{ public String data; ... @Exclude public String getData(){return data;} } 

正如接受的答案所述,Firebase现在使用Jackson,因此您可以注释您希望忽略的所需方法

@JsonIgnore

编辑:

Firebase改变了一切。 活泉。 现在用这个代替:

@排除

更新:

正如其他人指出的, @Exclude注解是现在正确的使用方法。 但是,如果你使用Kotlin,将无法正常工作。 对于Kotlin使用

 @get:Exclude var data: String? = nil //or @set:Exclude var data: String? = nil //or both @set:Exclude @get:Exclude var data: String? = nil 

因为注释只能应用于生成的字段,而不能应用于属性。

老答案:

我从GSON来到Firebase是使用了瞬态关键字。 这也适用于Firebase

 public transient String data; 

Firebase 1.0.3发布了,现在使用的是Jackson 2.2.2,所以@JsonIgnore的注释就是要走的路。

编辑:截至目前在2017年,Firebase不再使用jackson了。 正确的注释是@Exclude