用org.json库格式化localdatetime时出现问题

bfrts1fy  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(509)

我对使用 org.json 图书馆。
在我的代码中,我有:

  1. String resultStr = new JSONObject(result).toString();

在result object中有两个类型为 LocalDateTime :

  1. private LocalDateTime startDate;
  2. private LocalDateTime stopDate;

在变量中 resultStr 我的日期格式如下:

  1. 2020-01-23T14:13:30.121205

我想要这个iso格式:

  1. 2016-07-14T07:58:08.158Z

我知道在Jackson身上有一个注解 @JsonFormat ,但我没有发现类似的东西 org.json . 如何定义 LocalDateTime 在json字符串中 org.json ?

oewdyzsn

oewdyzsn1#

在java的json中,似乎不太支持日期/时间格式。
自定义的格式 LocalDateTime 我们可以利用

  1. @jsonpropertyignore忽略要序列化的原始getter
  2. @jsonpropertyname,用于注解具有忽略字段名的新getter,该字段返回所需的格式化日期字符串,如下所示:
  1. import java.time.LocalDateTime;
  2. import java.time.format.DateTimeFormatter;
  3. import org.json.JSONObject;
  4. import org.json.JSONPropertyIgnore;
  5. import org.json.JSONPropertyName;
  6. public class CustomizeLocalDateTimeFormatInOrgJson {
  7. public static void main(String[] args) {
  8. Result result = new Result(LocalDateTime.now(), LocalDateTime.now());
  9. String resultStr = new JSONObject(result).toString();
  10. System.out.println(resultStr);
  11. }
  12. public static class Result {
  13. DateTimeFormatter customDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssS'Z'");
  14. private LocalDateTime startDate;
  15. @JSONPropertyIgnore
  16. public LocalDateTime getStartDate() {
  17. return startDate;
  18. }
  19. @JSONPropertyName("startDate")
  20. public String getStartDateString() {
  21. return customDateTimeFormat.format(startDate);
  22. }
  23. private LocalDateTime stopDate;
  24. @JSONPropertyIgnore
  25. public LocalDateTime getStopDate() {
  26. return stopDate;
  27. }
  28. @JSONPropertyName("stopDate")
  29. public String getStopDateString() {
  30. return customDateTimeFormat.format(stopDate);
  31. }
  32. public void setStopDate(LocalDateTime stopDate) {
  33. this.stopDate = stopDate;
  34. }
  35. public void setStartDate(LocalDateTime startDate) {
  36. this.startDate = startDate;
  37. }
  38. public Result(LocalDateTime startDate, LocalDateTime stopDate) {
  39. super();
  40. this.startDate = startDate;
  41. this.stopDate = stopDate;
  42. }
  43. }
  44. }
展开查看全部

相关问题