【问题标题】:Format LocalDateTime Response json格式 LocalDateTime 响应 json
【发布时间】:2019-03-25 12:40:05
【问题描述】:

我想在 Javalin 上格式化我的 LocalDateTime。

我知道库使用 Jackson 来生成 JSON,我也知道如何配置它,但我可以在哪里设置 Jackson 配置?

我想将我的日期格式设置为“dd-MM-yyyy hh:mm:ss”。

谢谢

【问题讨论】:

  • 这是个糟糕的主意。使用标准 ISO 格式,并在表示层中按照您想要的方式格式化日期。
  • 我尝试用“@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")" 标记我的字段但不起作用,我需要什么做什么?
  • 再说一次,不要做那样的事情。继续使用标准的 ISO 格式。在表示层中格式化日期,而不是在 JSON 中。
  • 好的,我将创建一个带有字符串字段的 DTO 来设置我的 LocalDateTime 格式化,谢谢 :),因为项目是一个测试,我需要格式化输出日期来发送
  • 所以,你会做我不建议做的事。更糟糕的是:现在不仅您的 JSON 会很糟糕,而且还会损坏您的模型。

标签: kotlin jackson javalin


【解决方案1】:

在 Javalin 中,Jackson 可通过 JavalinJackson#configure () 进行配置。

在我的具体情况下,我会这样做

JavalinJackson.configure(jacksonObjectMapper().findAndRegisterModules())

然后添加适当的依赖:

compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.8"

【讨论】:

  • JavalinJackson 的配置方法现已弃用。如何使用 Javalin 版本 >= 4.0.0 执行此操作?
  • 好吧,看来我们需要将一个对象(实现 Javalin 中的 JsonMapper 接口)传递给 config.jsonMapper() 方法。此信息可以在这里找到javalin.io/documentation#faq
【解决方案2】:

您可以像这样格式化 LocalDateTime:

LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy hh:mm:ss"))

【讨论】:

    【解决方案3】:

    如果您对使用 Gson 感到满意(它可以很好地处理 LocalDateTime):

    Gson gson = new GsonBuilder().create();
    JsonMapper gsonMapper = new JsonMapper() {
        @Override
        public String toJsonString(@NotNull Object obj) {
            return gson.toJson(obj);
        }
        @Override
        public <T> T fromJsonString(@NotNull String json, @NotNull Class<T> targetClass) {
            return gson.fromJson(json, targetClass);
        }
    };
    Javalin app = Javalin.create(config -> config.jsonMapper(gsonMapper)).start(7070);
    

    以上代码sn-p来自官方文档:javalin.io/documentation#faq

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 2015-07-09
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      相关资源
      最近更新 更多