У меня есть следующий входящий json, который я десериализую в Model.java, а затем копирую этот java-объект в ModelView.java. Я не хочу конвертировать дату из строки в миллисекунды и отправлять исходящий json в качестве ответа. Как мне пойти на это?
У меня есть конкретная причина скопировать значение из Model.java в ModelView.java с помощью средства сопоставления объектов. Поэтому, пожалуйста, не предлагайте изменить эту часть. Я хочу сделать это с помощью аннотации. Я почти уверен, что это можно сделать, но не знаю, как.
Приведенный здесь json является упрощенным. У меня есть большой json в реальном сценарии.
Входящий json
{
"date":"2016-03-31"
}
Исходящий JSON
{
"date":236484625196
}
Мой класс контроллера
@Controller
public class SomeController extends BaseController {
@Autowired
private SomeService someService;
@RequestMapping(method = RequestMethod.GET, produces = "application/json")
public @ResponseBody
ResponseEntity<RestResponse> getDetails(HttpServletRequest request, HttpServletResponse response) {
Model model = someService.getData();
ModelView modelView = ModelView.valueOf(model);
return getSuccessResponse(modelView);
}
}
Модель.java
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Model implements Serializable {
private String date;
//normal getters and setters
}
ModelView.java
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ModelView implements Serializable {
private Long date;
//normal getters and setters
public static ModelView valueOf(Model model){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
ObjectMapper mapper = new ObjectMapper();
ModelView modelView = mapper.convertValue(model, ModelView.class);
try {
modelView.setDate(sdf.parse(model.getDate()).getTime());
} catch (ParseException e) {
IntLogger.error("logging error here");
}
return modelView;
}
}
Я готов изменить имя переменной с «дата» на что-то другое в ModelView.java, но исходящий json должен оставаться прежним.