Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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
用java中的Jackson自定义JSON字段反序列化?_Java_Json_Jackson - Fatal编程技术网

用java中的Jackson自定义JSON字段反序列化?

用java中的Jackson自定义JSON字段反序列化?,java,json,jackson,Java,Json,Jackson,给定这样一个简单的实体类 public class User { @JsonProperty public Calendar createdOn; @JsonProperty public String name; } 有没有一种方法可以让我挂接到jackson流式API中,只自定义反序列化createdOn字段?如果没有,那么将来会有这样的事情吗 public class User { @JsonProperty @JsonConverter(MyCustomCal

给定这样一个简单的实体类

public class User
{
  @JsonProperty
  public Calendar createdOn;

  @JsonProperty
  public String name;
}
有没有一种方法可以让我挂接到jackson流式API中,只自定义反序列化createdOn字段?如果没有,那么将来会有这样的事情吗

public class User
{
  @JsonProperty
  @JsonConverter(MyCustomCalendarConverter.class)
  public Calendar createdOn;

  @JsonProperty
  public String name;
}

看来我可以。我只是好奇,是否有一种方法可以自定义反序列化,每次只自定义一个字段,例如,自定义解析特定的日期格式,或将值数组读入自定义实体,等,同时让Jackson正常反序列化实体的其余部分。

您可以使用@JsonSerialize定义自定义序列化特定字段:

@JsonSerialize(using=MuCustomCalendarConverter.class)

谢谢(对不起,我在文档中漏掉了这个……我一直在看)嗯。。。要使用ObjectMapper,我需要对它做什么特殊的处理?我创建了一个扩展DateDeserializer的类,并将其应用于我的属性(类型为java.util.Date),然后在构造函数中创建了一个断点。当我进行反序列化时,断点从未命中,并且我得到了一个反序列化错误(这就是为什么我要自定义反序列化…)有什么想法吗?好吧,我最终切换到从
从StringDeserializer扩展而来,这就成功了。。。但我也在部署到GAE,似乎在添加自定义序列化程序时遇到了相同的问题,直到我对我的项目进行了清理/重建。。。说到底,可能和杰克逊没有任何关系。不,不需要什么特别的东西来启用它。GAE可能会在实例化该类方面引起一些问题;无论是由于识别注释,还是由于使用Class.newInstance()。如果你能确定它,一个bug报告可能会有所帮助,以防其他使用GAE系统的开发人员能够提供帮助。如果我确定了任何可复制的东西,我会得到一个bug文件。在此期间,我已经让这个工作。再次感谢所有的帮助和一个很棒的JSON库!