无法解析带下划线的字段

时间:2016-08-27 19:32:40

标签: java android firebase firebase-realtime-database pojo

我在Firebase服务器上有一个列名为seen_by

Test
  |
  |--viewed_by: 30 

在应用程序上我有一个POJO类,其成员被查看

Test.class 有成员

private int viewed_by;

当我收到数据时,在 onDataChange 函数中,我使用 getValue 函数获取Test对象

Test t = dataSnapshot.getValue(Test.class);

但我得到的值为0而不是30。

如果我将字段名称从 Viewed_by 更改为已浏览(在服务器和POJO类上),我会得到预期值(30)

这是getValue函数中的解析问题吗?或者字段名称不应该在名称中包含下划线?

2 个答案:

答案 0 :(得分:3)

Jus想出来了,不得不将功能名称从 ViewedBy更改为Viewed_By ,以便它可以与Viewed_by字段一起使用

/**
 *
 * @return
 * The viewed_by
 */
public int getViewed_By() {
    return viewed_by;
}

/**
 *
 * @param viewed_by
 * The viewed_by
 */
public void setViewed_By(int viewed_by) {
    this.viewed_by = viewed_by;
}

答案 1 :(得分:1)

另一种选择是只在模型中使用下面的@PropertyName("property_name")来声明属性,然后像您喜欢的那样使用getter和setter。

public class Actor {

    @NonNull
    @PrimaryKey
    @ColumnInfo(name = "profile_id")
    @PropertyName("profile_id")
    private String profileId;

    @ColumnInfo(name = "name")
    @PropertyName("name")
    private String name;

    @PropertyName("profile_id")
    public String getProfileId() {
        return profileId;
    }

    @PropertyName("profile_id")
    public void setProfileId(String profileId) {
        this.profileId = profileId;
    }

    @PropertyName("name")
    public String getName() {
        return name;
    }
}