Сериализация / десериализация модели в пожарном депо - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть следующий класс, который я хочу сохранить в 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, но я хочу сохранить список и попытаться сериализовать и десериализовать его, чтобы получить в firestore массив объектов.

1 Ответ

0 голосов
/ 19 сентября 2018

если эта сериализация, вы должны пометить свой класс как Serializable ..

public UserCompany extends Model implements Serializable
public class User extends Model implements Serializable

плюс пометить класс Model, а также

...