【问题标题】:Not able to parse fields with underscores无法解析带下划线的字段
【发布时间】:2016-08-27 19:32:39
【问题描述】:

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

Test
  |
  |--viewed_by: 30 

在应用程序上,我有一个 POJO 类,其中包含成员 viewed_by

Test.class有成员

private int viewed_by;

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    只是想通了,还必须将函数名称从 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;
    }
    

    【讨论】:

    • 最好切换到 GSon 或 Jackson 库以避免此类错误
    【解决方案2】:

    另一种选择是在您的模型中使用@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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2016-05-05
      • 1970-01-01
      • 2019-05-15
      • 2020-12-11
      相关资源
      最近更新 更多