android 为什么@PropertyName无法自动序列化Map,而成功地序列化了其他类型?

vptzau2j  于 2023-01-15  发布在  Android
关注(0)|答案(1)|浏览(101)

屏幕模型.java

public class ScreenModel {

    @PropertyName("TEST_FIELD")
    private HashMap<String, Object> testFieldHashMap;

    public HashMap<String, Object> getTestFieldHashMap() {
        return testFieldHashMap;
    }

}

添加快照侦听器

FirebaseFirestore.getInstance().collection("SCREENS").document(sharedPreferences.getString("documentId", null)).addSnapshotListener((value, error) - > {
if (error != null) return;
    
if (value != null && value.exists()) {
    ScreenModel screenModel = value.toObject(ScreenModel.class);
    if (screenModel.getTestFieldHashMap() == null)
        Log.w("ABC", "111"); // It always print this, why always null?
}});

为什么@PropertyName无法自动序列化Map,而成功地序列化了其他类型?

cu6pst1q

cu6pst1q1#

不是字段类型的问题,而是访问修饰符的问题,你把字段设置为私有,要解决这个问题,需要设置字段public

@PropertyName("TEST_FIELD")
public HashMap<String, Object> testFieldHashMap;
//👆

现在,在序列化时,注解将同时考虑字段名和getter。

相关问题