4 回答
TA贡献1812条经验 获得超5个赞
这可能对你有帮助。我有类似的情况,我使用这种方法将数据转换为特定的需求。
public class MyCriteria {
public MyCriteria(LocalDate from, LocalDate till, Long communityNumber, String communityName){
// assignement of variables
}
private LocalDate from;
private LocalDate till;
private Long communityNumber;
private String communityName;
}
因此,每当您从 JSON 创建对象时,它都会根据要求创建它。
当我实现这个时,我使用“Jackson”的 ObjectMapper 类来完成此操作。希望你也能使用同样的方法。
TA贡献1827条经验 获得超7个赞
在 pojo 类中使用 java.sql.Date 。就像 private Date from 一样。我希望它能用于 JSON 转换。当您从 UI 接收日期 JSON 字段时,请始终使用 Java.sql.Date 进行 Jackson 日期转换。
TA贡献1818条经验 获得超8个赞
问题的答案是使用 init binder 来注册指定条件内的类型映射。需要PropertyEditorSupport针对特定目的进行实施。
短代码示例是:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE));
}
});
}
完整的代码示例可以从github获取:
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.vl.example.rest.dtofromoaramsandpath.web.dto.MyCriteriaLd;
import java.beans.PropertyEditorSupport;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@RestController
@RequestMapping("verify/criteria/mapping")
@Slf4j
public class MyControllerLd {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(LocalDate.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE));
}
});
}
@GetMapping("community/{communityNumber}/dtold")
public MyCriteriaLd loadDataByDto(MyCriteriaLd criteria) {
log.info("received criteria: {}", criteria);
return criteria;
}
}
因此,这种情况的模型可以是下一个:
import lombok.Data;
import java.time.LocalDate;
@Data
public class MyCriteriaLd {
private LocalDate from;
private LocalDate till;
private Long communityNumber;
private String communityName;
}
TA贡献1828条经验 获得超6个赞
为此,您需要添加jsr310依赖项。
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.8.10")
我希望这对你有用。
添加回答
举报