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

Java 如何使用Firebase 1.0.2忽略对象模型的新字段,java,android,firebase,Java,Android,Firebase,我使用的是Firebase dependency的最新版本,即1.0.2,在正确解析POJO时遇到问题 问题是,在任何时候模式都可以更改,但我不希望我的应用程序因以下原因崩溃: D/AndroidRuntime(14097):关闭带有dalvikvm(14097)的虚拟机: threadid=1:线程以未捕获异常退出(组=0x40a451f8) E/AndroidRuntime(14097):致命异常:主 E/AndroidRuntime(14097):com.firebase.client.F

我使用的是Firebase dependency的最新版本,即1.0.2,在正确解析POJO时遇到问题

问题是,在任何时候模式都可以更改,但我不希望我的应用程序因以下原因崩溃:

D/AndroidRuntime(14097):关闭带有dalvikvm(14097)的虚拟机: threadid=1:线程以未捕获异常退出(组=0x40a451f8) E/AndroidRuntime(14097):致命异常:主 E/AndroidRuntime(14097):com.firebase.client.FirebaseException:失败 跳转到类型E/AndroidRuntime(14097):在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:213)

查看依赖关系树,我发现Firebase正在使用Jackson mapper 1.9.7,因此注释
@JsonIgnoreProperties(ignoreUnknown=true”)
不是一个选项。此外,对象映射器被包装到这个Firebase对象中,因此我无法配置
反序列化功能。未知属性
属性失败(
DeserializationConfig.Feature.FAIL_ON_UNKNOWN_属性
for Jackson 1.9及之前版本)

有没有办法将此属性设置为类级注释或配置映射器或任何其他机制

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


注意:我已经考虑过排除可传递的Jackson 1.9.7依赖项,并添加Jackson 2.0,以便访问此ignoreUnknown功能,但我不认为这是一个可行的选择,因为我将更改mayor版本。

Firebase 1.0.3已发布,现在使用Jackson 2.2.2,因此注释
@JsonIgnore
是可行的要走的路

编辑:
从2017年起,Firebase不再使用Jackson。正确的注释是。

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

@杰索尼奥雷

编辑: Firebase改变了一切。呜。现在改用这个:

@排除


对于那些已经转移到谷歌官方版本Firebase(截至2016年5月29日)的用户,您可以使用@Exclude而不是@JsonIgnore或@JsonProperty。这是他们文档的链接

例如:


更新:

正如其他人所指出的,注释
@Exclude
是现在使用它的正确方法。但如果您使用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的,我使用了transient关键字。这也适用于Firebase

public transient String data;

我已经联系了Firebase Android SDK开发人员,似乎应该可以将Jackson更新到2.0。请继续关注更新!好消息!感谢您提供的信息。当我问这个问题时,Firebase使用了旧版本(1.9.7)Jackson with的不支持@JsonIgnore。请检查已接受的答案。如何使用不再使用Jackson的新firebase 9.0.0执行此操作?我一段时间前编辑了答案。您需要
@Exclude
现在或在您的字段中使用
transient
public transient String data;