В каком слое должен происходить парсинг Json в Java модель?

192
07 августа 2018, 04:30

Использую(на сколько себе ее представляю) Mvp и чистую арх.Загвоздка в следующем, в data слое есть репозиторий который получает http_clenta(retrofit) и идёт в сеть получает данные в формате JSON

я в репозитории делаю сперва парсинг данных из jsona в pojo а потом и конвертирую этот pojo под нужную мне модель для domain слоя Код выгледит так

 @Override
    public Observable<AuthorizationModel> sendMail(String mail) {
        return httpClient.getHttpClient().create(AuthorizationServiceApi.class)
                .sendMail(UniqueUtils.getMacAddr(), mail)
                .flatMap(authrozationParser::parseAuthorizationDate)
                .flatMap(serverResponseMapper::transofrmToAuthorizationModel)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread());
    }

где нужно делать парсинг ? я делаю в репозитории.Но чую ой не правильно

Answer 1

DataLayer Архитектура его мб разной. Могу посоветовать не волноваться, по таким вопросам, пока действительно станет неудобно использовать Репозитории. Ваш пример нормальный, а если вас волнует как отделить парсер, могу посоветовать разделять data, ведь парсить можно локальные данные (raw, files), удаленные данные, системные и тд. Те в вашем случае authrozationParser мог быть remoteData тогда у Репозитория может быть доступ к Remote и выглядило бы это примерно так:

.flatMap(remoteData::parseAuthorizationDate)

ваш репозиторий тогда облегчиться и ему будет проще выполнять предназначенную роль DataMapper, а из репозиториев уедет копипаста

READ ALSO
Log4j не создает файл

Log4j не создает файл

Есть Spring boot приложениеХочу добавить туда логирование log4j

167
Google maps api direction c retrofit 2

Google maps api direction c retrofit 2

Ребят есть у кого пример кода, который позволяет получить путь по 2 точкам под Retrofit 2? Существующие статьи, которые я нашел, и статьи на хабре...

189
Ошибка в формуле рандомайзера

Ошибка в формуле рандомайзера

Сделал рандомайзер, но вижу, что ошибка в формуле - неправильные числа выдает

157
как запретить Servlet-у перехватывать requestDispatcher.forward

как запретить Servlet-у перехватывать requestDispatcher.forward

Url-pattern для сервлета выставлен как /* но мне хотелось бы чтобы rdforward не шел к сервлету, а сразу к jsp можно ли это сделать?

179