【问题标题】:Google Endpoint - java.sql.Timestamp - JSON谷歌端点 - java.sql.Timestamp - JSON
【发布时间】:2015-09-28 22:07:05
【问题描述】:

如何从前端将 java.sql.Timestamp 作为 JSON 传递? 默认情况下,我尝试在 API 探索中给出类似 2015-09-29T12:30:00 的内容。 它不工作。

另外,如果有人知道,如何将@ApiTransformer 用于内置 Java 类。或者是否可以选择在属性级别而不是 POJO 类级别使用此注释。

答案:

    Timestamp timestamp = new Timestamp(new Date().getTime());
    ObjectMapper mapper = new ObjectMapper();
    try {
        String jacksonDate = mapper.writeValueAsString(timestamp);
        System.out.println("JSON Timestamp: "+jacksonDate);
        System.out.println("JAVA Timestamp: "+mapper.readValue(jacksonDate, Timestamp.class));
    } catch (IOException e) {
        e.printStackTrace();
    }

输出:
JSON 时间戳:1443772585286
JAVA时间戳:2015-10-02 11:56:25.286

即使它接受:yyyy-MM-DD'T'HH:mm:ss

【问题讨论】:

    标签: java google-app-engine google-cloud-endpoints google-cloud-platform


    【解决方案1】:

    我建议你反其道而行之。

    假设您从数据库获取值到 Java bean (POJO) 并将它们序列化为 JSON 对象。将它们打印出来,尤其是时间戳值。

    然后使用与快捷答案相同的格式值。

    另一方面,在杰克逊,我知道 java.sql.Date 接受“长”时间度量值。 Timestamp 可以使用相同的方法。 “以毫秒为单位的时间”是一个很长的值。

    另一方面,如果您希望在 Rest 系统中处理类型的编组和解组,您可以检查一下。

    http://www.developerscrappad.com/2308/java/java-ee/rest-jax-rs/java-rest-jax-rs-2-0-how-to-handle-date-time-and-timestamp-data-types/

    【讨论】:

    • 非常感谢! GAE 使用 Jackson 库作为 JSON 解析器。我尝试在独立程序中将时间戳与 JSON 相互转换,并找到了 Jackson 期望的格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    相关资源
    最近更新 更多