Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis Jackson2HashMapper未使用flant=True序列化日期_Redis_Spring Data_Jackson2 - Fatal编程技术网

Redis Jackson2HashMapper未使用flant=True序列化日期

Redis Jackson2HashMapper未使用flant=True序列化日期,redis,spring-data,jackson2,Redis,Spring Data,Jackson2,使用带有flant=true的Jackson哈希映射器,我的日期字段将被丢弃。这是正确的行为还是错误?有没有办法用flant=true序列化日期 我使用了以下测试Pojo: import java.util.Date; public class FooClass{ private Boolean foolean; private Integer barteger; private String simpleString; private Date myDate; public

使用带有flant=true的Jackson哈希映射器,我的日期字段将被丢弃。这是正确的行为还是错误?有没有办法用flant=true序列化日期

我使用了以下测试Pojo:

import java.util.Date;
public class FooClass{
  private Boolean foolean;
  private Integer barteger;
  private String simpleString;
  private Date myDate;
  public void setFoolean(Boolean value){ foolean = value; }
  public Boolean getFoolean(){ return foolean; }
  public void setBarteger(Integer value){ barteger = value; }
  public Integer getBarteger(){ return barteger; }
  public void setSimpleString(String value) { simpleString = value; }
  public String getSimpleString(){ return simpleString; }
  public void setMyDate(Date value) { myDate = value; }
  public Date getMyDate(){ return myDate; }
}

public class Main {
  public static void main(String[] args) throws ParseException, 
    JsonParseException, JsonMappingException, IOException {
    Jackson2HashMapper hashMapper = new Jackson2HashMapper(true);

    FooClass fooObject = new FooClass();
    fooObject.setFoolean(true);
    fooObject.setBarteger(10);
    fooObject.setSimpleString("Foobar");
    fooObject.setMyDate(new Date());

    Map<String, Object> hash = hashMapper.toHash(fooObject);
    for (String key: hash.keySet())
    {
      System.out.println("hash contains: " + key + "=" + 
      hash.get(key.toString()));
    }

    FooClass newFoo = (FooClass)(hashMapper.fromHash(hash));
    System.out.println("FromHash: " + newFoo);
  }
}
如果我更改了新的Jackson2HashMapper(false);然后我得到:

hash contains: @class=FooClass
hash contains: foolean=true
hash contains: barteger=10
hash contains: simpleString=Foobar
hash contains: myDate=[java.util.Date, 1547033077869]
FromHash: FooClass@7ed7259e
我希望在这两种情况下都能序列化日期字段——可能还有一个描述日期类型的字段(扁平化)

我在HashMapper代码中找到了这一点的原因:
typingMapper.enableDefaultTyping(DefaultTyping.NON_FINAL,As.PROPERTY)

配置映射器的位置。

它似乎是在
Jackson2HashMapper
中发出的。 在深入研究Jackson2HashMapper的源代码之后,它似乎在
Jackson2HashMapper
中出现了问题。
为此创建了一个问题,

他们已修复该问题。。。将是下一个快照的一部分
hash contains: @class=FooClass
hash contains: foolean=true
hash contains: barteger=10
hash contains: simpleString=Foobar
hash contains: myDate=[java.util.Date, 1547033077869]
FromHash: FooClass@7ed7259e