Зачастую мне нужно POST-объекты, которые мне нужны только один раз, поэтому я спрашиваю себя, действительно ли мне нужно добавить дополнительный класс.
Ваш вопрос может вызвать мнение, основанное на мненииответы ... Но в любом случае я стараюсь подчеркнуть несколько - надеюсь, не имеющих мнения - баллов.Во-первых, что вы достигнете, если решите создать JsonObject
вместо определения класса DTO для ваших данных?
Я имею в виду, если у вас был DTO вроде:
@AllArgsConstructod
FooBarDTO {
String foo;
Integer age;
}
, а затем использовать егонапример:
Call<Something> call = caller.createSomething(new FooBarDTO("bar",42));
На самом деле создание этого класса DTO не стоит слишком дорого, но дает такие вещи, как:
- тип безопасного создания экземпляра DTO легко
- если вам позже понадобится изменить то, что вам не обязательно взламывать логику на стороне клиента и сервера (когда дело доходит до создания
JsonObject
), возможно, вам просто нужно немного изменить DTO.
Таким образом, ваш UserCreateDTO
должен был бы хорошо разобрать материал.Вы бы сэкономили усилия и поддержку кода, который бы выполнял что-то вроде:
user.setAge( jsonObject.getAsInt("age") ):
, но (хорошо, я допускаю, что это могло бы вызвать мнения) более надежным способом:
user.setAge(dto.getAge());
Альтернатива - использовать com.google.gson.JsonObject для этой ситуации.Это позволяет мне создавать объекты Json, которые не нуждаются в дополнительном классе.
Да, но это требует некоторых других вещей, когда ваш сервер анализирует данные.Затем вам нужно будет обработать некоторые детали, например, получить свойство и узнать во время разбора, является ли оно int, string, array of somehting.