2014-07-11 31 views
6

我熟悉正常的多态反序列化的东西,基于某个字段的字符串值反序列化一个对象。例如:整数字段而不是字符串的杰克逊多态反序列化

@JsonSubTypes(
      { 
       @JsonSubTypes.Type(value = LionCage.class, name = "LION"), 
       @JsonSubTypes.Type(value = TigerCage.class, name = "TIGER"), 
      } 
     ) 
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") 

如果传入对象的“类型”字段是整数而不是字符串,是否有任何方法可以做基本相同的事情?所以在上面的例子中,“LION”和“TIGER”将是1和2.不管出于什么原因,我都无法弄清楚这一点。

另外,我应该怎样才能弄清楚这一点?似乎它应该是明显的东西。

+0

只要您的模型类使用外部属性的字符串,整数就可以。杰克逊很聪明,似乎将整数转换为一个字符串给你。我在这里做了非常类似的事情,如果你对这些细节感兴趣的话:http://stackoverflow.com/questions/38501574/rules-for-jersey-to-parse-json – pandaadb

回答

0

不,这不是通过注释选项。 TypeIdResolver接口接受并返回字符串。你可以用一个使用Jackson的流API的自定义分析器/序列化器来完成,但是这似乎有很多工作要将它切换到数字字段。如果别人的系统需要它,我只会这样做。如果我拥有所有东西,我只会使用您在问题中发布的设置。

相关问题