Android [дооснащение] - непарсируемая дата - PullRequest
0 голосов
/ 29 мая 2018

Я отправляю запрос GET с помощью Retrofit, и у меня есть проблема, как показано ниже:

io.reactivex.exceptions.OnErrorNotImplementedException: java.text.ParseException: Unparseable date: "2018-05-09"

Моя объектная модель:

public class Device {
    private int id;
    private int phoneNumber;
    private String connectionName;
    private String deviceName;
    private Date startConnection;
    private Location actualLocation;
    private User owner;

//getters setters and constructor
}

GET:

public void getAllDevicesForCurrentUser(){
        compositeDisposable.add(restAPI.getDevices("Bearer " + TokenHolder.getInstance().getToken())
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<List<Device>>() {
                    @Override
                    public void accept(List<Device> devices) throws Exception {
                        initializeDevices(devices);
                    }
                }));
    }

Чтоэто проблема?

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Теперь я получаю

 io.reactivex.exceptions.OnErrorNotImplementedException: java.text.ParseException: Unparseable date: "00:06:00"

Я хочу разобрать время с моим объектом. Location actualLocation где

public class Device {
    private int id;
    private int phoneNumber;
    private String connectionName;
    private String deviceName;
    private Date startConnection;
    private Location actualLocation;
    private User owner;

//getters setters and constructor
}

и Location:

public class Location {
    private int id;
    private float gpsLatitude;
    private float gpsLongitude;
    private Date date;
    private Time time;
    private Device device;
}
0 голосов
/ 29 мая 2018

Хорошо, я исправляю эту проблему.

Я добавляю @Expose над всеми переменными в объектах и ​​Expose(deserialized = false) в переменных, которые мне не нужны для анализа из JSON.

Наконец,

Gson gson = new GsonBuilder()
                    .excludeFieldsWithoutExposeAnnotation().setPrettyPrinting().create();
0 голосов
/ 29 мая 2018

Вам нужно будет установить формат даты в вашей инициализации модернизации.Вот как вы можете это сделать

Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd")
.create();

Retrofit retrofitAdapter = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
...