java - Firebase - 在类上找不到要序列化的属性

标签 java android firebase firebase-realtime-database

我有这样一个类:

class dataModel {
    String id, name;
    Integer count;

    dataModel() {}
}

然后我从 Firebase 添加数据。

mDatabase.addValueEventListener(mListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            dataSet.add(dataSnapshot.getValue(dataModel.class));
            //...
        }
});

当我以调试方式运行应用程序时,没有问题。但在发布后,应用程序崩溃并出现错误:

com.google.firebase.database.DatabaseException: No properties to serialize found on class com.my.package.dataModel

我有 minifyEnabled true

最佳答案

要解决这个问题,您的类需要实现 Serializable接口(interface):

class dataModel implements Serializable {}

您还需要添加一个具有三个参数的构造函数。你的类应该是这样的:

class dataModel implements Serializable {
    private String id, name;
    private Integer count;
    @ServerTimestamp
    private Date time;

    dataModel() {}

    dataModel(String id, String name, Integer count) {
        this.id = id;
        this.name = name;
        this.count = count;
    }
}

如果日期为 null,它将具有服务器生成的时间戳。所以你不需要为它设置值。另请参阅用于标记要填充服务器时间戳的日期字段的注释

同样非常重要,不要忘记添加public getters

另一个要求是添加 -keepclassmembers class com.yourcompany.models.** { *; 在 proguard-rules.pro 中。

如前所述here .

关于java - Firebase - 在类上找不到要序列化的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254266/

相关文章:

android - 无法访问 'LinkedHashTreeMap' : it's a public/*package*/com. squareup.moshi

java - Android JSON only OBJECT Fetching with Iteration

java - 无法访问 Cloud Firestore 子项的值

ios - 无法构建 Objective-C 模块 'CoreGraphics'

java - 与NLP的句子对比

java - 组织.apache.jasper.JasperException : Unable to compile class for JSP - Tomcat 7

android - 使用 osmbonuspack 启动点击 MarkerInfoWindow 的 Intent

ios - 在 swift 中以编程方式创建的 firebase 动态链接不起作用,没有域

java - JFrame 和 JPanel 居中

java - 为什么向下转换在 C++ 中是一种不好的做法,而不是在另一种语言中?