Nano Hash - криптовалюты, майнинг, программирование

Firebase - в классе не найдено свойств для сериализации

У меня есть такой класс:

class dataModel {
    String id, name;
    Integer count;

    dataModel() {}
}

И я добавляю данные из Firebase.

mDatabase.addValueEventListener(mListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            dataSet.add(dataSnapshot.getValue(dataModel.class));
            //...
        }
});

Когда я запускаю приложение как отладку, проблем нет. Но после его выпуска приложение вылетает с ошибкой:

com.google.firebase.database.DatabaseException: No properties to serialize found on class com.my.package.dataModel

У меня minifyEnabled true


Ответы:


1

Чтобы решить эту проблему, ваш класс должен реализовать Serializable< /а> интерфейс:

class dataModel implements Serializable {}

Вам также нужно добавить конструктор с тремя аргументами. Ваш класс должен выглядеть так:

class dataModel implements Serializable {
    private String id, name;
    private Integer count;
    @ServerTimestamp
    private Date time;

    dataModel() {}

    dataModel(String id, String name, Integer count) {
        this.id = id;
        this.name = name;
        this.count = count;
    }
}

Если дата null, она будет иметь отметку времени, сгенерированную сервером. Поэтому вам не нужно устанавливать для него значение. Также см. annotation, используемый для обозначения поля Date, которое должно быть заполнено отметкой времени сервера.

Также очень важно, не забудьте добавить public getters.

а другим требованием будет добавление -keepclassmembers class com.yourcompany.models.** { *; } в proguard-rules.pro.

Как сказано здесь.

17.09.2017
  • @Dika Только что отредактировал мой ответ другим подходом. Надеюсь, вы передумаете голосовать за ответ. 17.10.2017
  • Выполнено. Извините за поздний ответ. И я отредактировал ваш ответ 19.10.2017
  • @AlexMamo com.google.firebase.database.DatabaseException: No properties to serialize found on class com.packagename.models.d но в папке моделей такого класса нет 08.12.2017
  • Спасибо за предпоследнюю строку 15.08.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..