Прежде всего, я предлагаю вам сделать все поля приватными, у вас есть геттеры и сеттеры для ваших полей.
Также неплохо отделить имя класса ответа DTO (?) От имени поля и фактического именования типа.
Предполагая, что имена полей в DTO ответа указывают фактический тип,затем выполните рефакторинг, например, Warehouses
в WarehousesResponse
и Warehouse
в WarehouseResponse
.
. Затем о массиве, выделенном из JSON:
"warehouse": {
"PRiyA": "0",
"WHID": "1 ALABO",
"PRixA": ""
}
thisне является массивом с именем хранилища, поэтому его нельзя десериализовать до List
.
Это объект типа Warehouse
(поэтому для ясности различие WarehouseResponse, но см. также упоминание о Map
позже) это поле с именем хранилища в объекте типа WarehouseResponse
(при условии, что вы согласны с политикой именования).
Один из вариантов - создать класс, подобный:
@Getter @Setter
public class Warehouse {
private String PRiyA;
private String WHID;
private String PRixA;
}
и изменить WarehouseResponseнапример:
@Getter @Setter
public class WarehouseResponse {
// Change the list to warehouse object as it is in response
// private List<WarehouseField> warehouse;
private Warehouse warehouse;
private String url;
private Date date = new Date();
}
Обычно также можно установить пары ключ / значение просто - например, на Map<String,String>
, поэтому в этом случае WarehouseResponse
s также может иметь private HashMap<String, String> warehouse
и неКласс Warehouse
будет необходимо.Однако я не смог заставить его работать со своими Moxy
знаниями.
Поэтому я представил, как вы можете десериализовать (и сериализовать) формат, который вы указали в вашем JSON, но я не могу знать, что это тогда соответствует вашим возможным XML
потребности