杰克逊中的自定义JSON数组反序列化

时间:2012-09-12 22:18:57

标签: java android json jackson deserialization

我需要使用org.codehaus.jackson完全按照我的方式反序列化json属性(字段)。我知道自定义@JsonDeserializer选项,但这只有在需要反序列化给定的数组值时才有用。我需要反序列化数组和数组本身的值。具体来说,我需要从ORMLite反序列化ForreignCollection,因此我应该能够以编程方式创建ForeignCollectionField并在其中添加值。

@JsonProperty
@ForeignCollectionField
private ForeignCollection<PerformerLocalized> localized;

有任何想法,如何管理它?

1 个答案:

答案 0 :(得分:3)

@JsonDeserialize可以使用BOTH容器AND值,如下所示:

@JsonDeserialize(using=MyContainerDeserializer.class, // this would apply to Collection
   contentUsing=ValueDeserializer.class) // and this to value type

请注意,通常Collection反序列化器不处理值,而只是委托它(使事情很好地模块化)。但是你可以用你的解串器选择不同的方式;委托或直接处理。如果您想委派,您可能希望实现ContextualDeserializer接口,以便能够解析委托反序列化器。