我正在进行api调用,该响应包括对象列表,json响应为:
[
{
"name": "jay",
"age": 27,
"avatar": "https://avatars.abc/bat_man/",
"friends": [{
"friend_name": "abc",
"friend_age": 23,
"avatar": "https://avatars.abc/thor/"
},
{
"friend_name": "xyz",
"friend_age": 26,
"avatar": "https://avatars.abc/hulk/"
},
{
"friend_name": "pqr",
"friend_age": 28,
"avatar": "https://avatars.abc/iron_man/"
}
]
},
{
"name": "ajay",
"age": 27,
"avatar": "https://avatars.abc/bat_man/",
"friends": [{
"friend_name": "abc",
"friend_age": 23,
"avatar": "https://avatars.abc/thor/"
},
{
"friend_name": "xyz",
"friend_age": 26,
"avatar": "https://avatars.abc/hulk/"
},
{
"friend_name": "pqr",
"friend_age": 28,
"avatar": "https://avatars.abc/iron_man/"
}
]
}
]
我创建了一个没有friends
属性的模型,一旦添加了Friend
列表,我就无法使用房间了,现在创建的模型将适用于RetroFit,但它将对于Room不起作用,因为Room不支持实体内部的列表对象。
我使用@TypeConverter
对其进行了修复,但是之后改装停止工作。
我正在寻找一种方法,以便可以对两者使用相同的模型(api调用+通过房间持久保存数据)。
我试图使模型与ROOM一起使用,但是在那之后,由于明显的原因(没有得到解析),我的改造api回调即将进入onFailure()
,我收到的错误是{{1 }}。
有没有办法让我忽略Retrofit调用中的某些特定属性,并为这两个目的使用相同的模型。
我的模特看起来:
Failed sending reply to debugger: Broken pipe
答案 0 :(得分:0)
您可以使用第一种方法,用@Ignore
注释要在会议室中忽略的字段
@Entity(tableName = "user_table")
public class User {
private String name;
private String href;
private String avatar;
@Ignore private Friends friend;
假设您的刀中有这样的东西
@Dao
public interface MyDao {
@Insert
public void insertUser(User user);
@Insert
public void insertFriends(List<Friend> friends);
}
然后您可以按如下所示添加数据
myDao.insertUser(user)
myDao.insertFriends(user.getFriend())
使用这种方法,您需要做一些更改:
Friends
对象列表,而不是Friend
对象。