将日期类型数据重新编写为JSON时,格式标识的作用位置是什么?

时间:2016-12-21 01:59:55

标签: json spring spring-boot cassandra spring-data

使用" Spring Boot + Spring Data + Cassandra"创建示例应用程序。配置。

假设存储以下数据

结果查询

cqlsh:keyspaceb> SELECT * FROM memobox where pkey1='a' and pkey2='b' ORDER BY id;

 pkey1 | pkey2 | id                                   | name     | date                     | memo
-------+-------+--------------------------------------+----------+--------------------------+----------------
     a |     b | f56b8ea0-c657-11e6-8db6-27bcd31c20cd |   tanaka | 2016-12-13 00:00:00+0000 | greet message1
     a |     b | f5ed41c0-c657-11e6-8db6-27bcd31c20cd | yamamoto | 2016-12-13 00:00:00+0000 | greet message2

创建Rest Web APP 发出卷曲的结果如下。

$ curl http://localhost:8888/MemoBoxCassandra/api/memobox -i -XGET
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   265    0   265    0     0   1064      0 --:--:-- --:--:-- --:--:--  1132HTTP/1.1 200
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 21 Dec 2016 01:21:43 GMT

[{"pkey1":"a","pkey2":"b","id":"f56b8ea0-c657-11e6-8db6-27bcd31c20cd","name":"tanaka","memo":"greet message1","date":1481587200000},{"pkey1":"a","pkey2":"b","id":"f5ed41c0-c657-11e6-8db6-27bcd31c20cd","name":"yamamoto","memo":"greet message2","date":1481587200000}]

此处,"列"是" date",但我不想要我想要的格式。

在Cassandra方面,它是一个"时间戳"类型。 在Java的实体方面,它是" java.util.Date"类型。 Repository类的获取部分如下。

package com.example.sb.repository;

import java.util.List;
import java.util.UUID;
import org.springframework.data.cassandra.repository.CassandraRepository;
import org.springframework.data.cassandra.repository.Query;
import org.springframework.stereotype.Repository;
import com.example.sb.entity.MemoBox;

@Repository
public interface MemoBoxRepository extends CassandraRepository<MemoBox> {
    @Query("SELECT * FROM memobox where pkey1='a' and pkey2='b' ORDER BY id")
    List<MemoBox> findAllOrderById();
}

我应该在哪里指定日期格式格式?

1 个答案:

答案 0 :(得分:0)

您可以在配置类中使用ObjectMapper定义日期格式。

@Configuration
public class JacksonConfiguration {
    @Bean
    public ObjectMapper objectMapper() {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm a z");
        ObjectMapper mapper = new ObjectMapper();
        mapper.setDateFormat(df);
        return mapper;
    }
}

以上将影响所有具有Date属性的类,这些类使用jackson进行序列化和反序列化。如果你想要一个特定的类和属性,你可以在你的POJO /实体中使用@JsonFormat,如下所示。

public class Person {

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
    private Date dateOfBirth;

    // other properties

    // setters and getters
}