如何用Realm与Parcel将单API响应映射至两个RealmObject模型?
解决方案:用现有RealmModel映射API响应
嘿,我来帮你搞定这个建模问题!你的API响应顶层包含用户基础信息(id、name、surname)和一个inventory对象,正好可以用你现有的ModelA和ModelB来映射——只需要给两个模型建立关联就行,具体步骤如下:
1. 调整ModelB,关联ModelA
你的ModelB已经对应了API里的用户核心字段,现在只需要在ModelB里添加一个ModelA类型的inventory字段,这样就能把API里的inventory对象完美映射进来,同时保持Realm和Parcel的注解配置正确。
2. 修改后的完整代码示例
调整后的ModelB
@Parcel(implementations = { ModelBRealmProxy.class }, value = Parcel.Serialization.FIELD, analyze = { ModelB.class }) public class ModelB extends RealmObject { @PrimaryKey public String id; public String name; public String surname; // 添加ModelA类型的inventory字段,对应API里的inventory节点 public ModelA inventory; }
保持ModelA不变(对应API里的inventory结构)
@Parcel(implementations = { ModelARealmProxy.class }, value = Parcel.Serialization.FIELD, analyze = { ModelA.class}) public class ModelA extends RealmObject { // 这里根据API里inventory的实际字段补充属性,比如: // public String itemId; // public int quantity; // ... 你原来定义的inventory相关字段 }
3. 解析API响应到ModelB
现在ModelB已经完整对应了整个API响应结构,不管你用Retrofit、Gson还是其他解析库,都可以直接把API响应解析为ModelB对象:
- 如果用Gson,记得配置Realm支持(比如添加
RealmGsonTypeAdapterFactory) - 如果用Retrofit,把接口的返回类型设为
Call<ModelB>即可
这样一来,API里的id、name、surname会自动映射到ModelB的对应字段,而inventory对象则会映射到ModelB里的ModelA属性,完美匹配你现有的两个RealmObject模型!
内容的提问来源于stack exchange,提问作者Fırat Turan
相关产品推荐
相关产品推荐

