You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何@PropertyName可序列化其他类型,却无法自动序列化Map字段?

问题原因及解决方案

你遇到的问题是Firestore对Map类型的POJO映射规则和普通简单类型不同,导致带@PropertyName注解的HashMap始终为null。

核心原因

Firestore对于String、Integer这类简单数据类型,即使只有Getter方法,也能通过反射直接访问私有字段完成数据注入;但Map作为复杂集合类型,必须满足要么有对应带注解的Setter方法,要么在Getter方法上标注正确的@PropertyName,否则无法完成数据映射。

可行解决方案

方案一:添加带注解的Setter方法

给testFieldHashMap添加Setter方法,并同步标注@PropertyName注解,让Firestore能正确注入数据:

public class ScreenModel {

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

    @PropertyName("TEST_FIELD")
    public HashMap<String, Object> getTestFieldHashMap() {
        return testFieldHashMap;
    }

    @PropertyName("TEST_FIELD")
    public void setTestFieldHashMap(HashMap<String, Object> testFieldHashMap) {
        this.testFieldHashMap = testFieldHashMap;
    }
}

方案二:在Getter方法上标注注解

直接在Getter方法上添加@PropertyName注解(可以保留或移除字段上的注解),Firestore会优先识别Getter上的注解完成映射:

public class ScreenModel {

    private HashMap<String, Object> testFieldHashMap;

    @PropertyName("TEST_FIELD")
    public HashMap<String, Object> getTestFieldHashMap() {
        return testFieldHashMap;
    }
}

内容的提问来源于stack exchange,提问作者Taha Sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:40:54