我有以下要存储在Firestore中的类。
public class User extends Model {
@PropertyName("user_auth_id")
public String authUid;
@PropertyName("first_name")
public String firstName;
@PropertyName("last_name")
public String lastName;
@PropertyName("picture_url")
public String pictureUrl;
@PropertyName("email")
public String email;
@PropertyName("companies")
public ArrayList<UserCompany> companies;
public User() {}
}
public class UserCompany extends Model {
public String name;
public String role;
public String position;
public UserCompany() {
super();
}
public UserCompany(Company company, String role, String position) {
this();
name = company.name;
this.role = role;
this.position = position;
}
public Map<String, Object> toObject() {
Map<String, Object> object = new HashMap<>();
object.put("id", id);
object.put("name", name);
object.put("role", role);
object.put("position", position);
return object;
}
}
@IgnoreExtraProperties
public class Model {
@Exclude
public String id;
public <T extends Model> T withId(@NonNull final String id) {
this.id = id;
return (T) this;
}
}
我想使用交易更新其新创建的公司列表中的用户条目。 (appUser instanceOf User)
transaction.update(userRef, "companies", appUser.companies);
如果这样做,我会得到
无效数据。不支持的类型:ro.exemple.model.UserCompany
如何序列化User对象,以便可以将其反序列化
User appUser = queryDocumentSnapshots.getDocuments().get(0).toObject(User.class);
其中的queryDocumentSnapshots是我的Firestore数据库中查询的结果。
我知道我可以从ArrayList更改为HashMap,但我希望保留该List,并尝试对其进行序列化和反序列化,以便在Firestore中获取对象数组。
答案 0 :(得分:0)
如果进行此序列化,则必须将您的类标记为Serializable。
public UserCompany extends Model implements Serializable
public class User extends Model implements Serializable
还要标记类Model