我正在使用带有MySql数据库的Java spring MVC,而且我正在尝试使用REST api。
问题在于日期字段,这是我的模型:
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name = "patient_mesure")
@JsonAutoDetect
public class PatientMesure {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "mesure_patient")
private float mesure_patient;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "mesure", nullable = false)
private Mesure mesure;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "patient", nullable = false)
private Personne patient;
@Column(name = "date")
private Date date;
@Column(name = "inserted", nullable = false)
private Date inserted;
@Column(name = "updated", nullable = false)
private Date updated;
// getters and setters
}
这是我的Rest Controller:
import com.eheio.spring.models.PatientMesure;
import com.eheio.spring.models.Personne;
import com.eheio.spring.services.PatientMesureService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
@RestController
public class PatientMesureRestController {
private PatientMesureService patientMesureService;
@Autowired
public void setPatientMesureService(PatientMesureService patientMesureService) {
this.patientMesureService = patientMesureService;
}
@GetMapping(value = "/getAllMesures")
public List<PatientMesure> listAllUsers(HttpServletRequest httpServletRequest) {
HttpSession httpSession = httpServletRequest.getSession(true);
Personne personne = (Personne) httpSession.getAttribute("personne");
return patientMesureService.findMesuresByPatient(personne.getId());
}
}
我得到的结果:
{ id: 1, date: 1527801252000, inserted: 1527801252000, mesure_patient: 50, updated: 1527801252000}
如何获取日期字段的正确表单?像2018-05-31 21:14:12
答案 0 :(得分:0)
设置自定义JsonSerialize并在那里格式化,SimpleDateFormat这样:
首先创建JsonDateSerializer类:
year X10. X30. X50. X80. DOY NDVI
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2013. -0.844 -0.459 -0.0144 0.583 247. -0.844
2 2013. -0.844 -0.459 -0.0144 0.583 96. -0.447
3 2013. -0.844 -0.459 -0.0144 0.583 202. -0.0144
4 2013. -0.844 -0.459 -0.0144 0.583 59. 0.584
5 2014. -0.811 -0.403 -0.0136 0.623 128. -0.818
6 2014. -0.811 -0.403 -0.0136 0.623 37. -0.410
7 2014. -0.811 -0.403 -0.0136 0.623 187. -0.0136
8 2014. -0.811 -0.403 -0.0136 0.623 278. 0.620
9 2015. -0.890 -0.494 -0.0332 0.646 280. -0.887
10 2015. -0.890 -0.494 -0.0332 0.646 330. -0.488
然后在你的getter方法中:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
import org.springframework.stereotype.Component;
@Component
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
另外,您使用的是Java 8,DateTimeFormatter是线程安全的(正如@Philippe Marschall指出的那样):
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
return date;
}
答案 1 :(得分:0)
您可以使用如下
import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SS a")
@Column(name = "date")
private Date date;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SS a")
@Column(name = "inserted", nullable = false)
private Date inserted;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SS a")
@Column(name = "updated", nullable = false)
private Date updated;