我有以下传入的 json,我将其反序列化为 Model.java,然后将该 java 对象复制到 ModelView.java。我不想将日期从 String 转换为毫秒并将 Outgoing 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
}
模型视图.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 应该保持不变。