【问题标题】:Jackson fails to serialize Joda DateTimeFormatterJackson 无法序列化 Joda DateTimeFormatter
【发布时间】:2017-01-21 14:14:33
【问题描述】:

我试图在我的 Spring MVC 3 应用程序中返回一个 JSON,但它对 Joda DateTimeFormatter 失败了

com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.joda.time.format.DateTimeFormat$StyleFormatter and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.HashMap["personDay"]->mypackage.PersonDay["dateTimeFormatter"]->org.joda.time.format.DateTimeFormatter["parser"])

看起来我可能需要一个自定义序列化程序,但我不确定从哪里开始。

【问题讨论】:

  • this的帖子了吗

标签: java json api serialization jodatime


【解决方案1】:

您可以查看here 了解更多详情和选项。

基本上,您需要创建一个Serializer,类似于:

public class ItemSerializer extends StdSerializer<Item> {
  public ItemSerializer() {
      this(null);
  }
  public ItemSerializer(Class<Item> t) {
      super(t);
  }
  @Override
  public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) 
    throws IOException, JsonProcessingException {
      jgen.writeStartObject();
      jgen.writeNumberField("id", value.id);
      jgen.writeStringField("itemName", value.itemName);
      jgen.writeNumberField("owner", value.owner.id);
      jgen.writeEndObject();
  }
}

然后您可以使用:@JsonSerialize 注释您的课程,例如:

@JsonSerialize(using = ItemSerializer.class)
public class Item {
    public int id;
    public String itemName;
    public User owner;
}

【讨论】:

    猜你喜欢
    • 2016-07-24
    • 1970-01-01
    • 2011-08-07
    • 2015-06-20
    • 1970-01-01
    • 2018-03-14
    • 2013-09-25
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多