2

通常、Jackson でポリモーフィック デシリアライゼーションを行う場合、クラスにマップする文字列フィールドがあり、このように行うことができます。

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    property = "methodName")
@JsonSubTypes({
    @JsonSubTypes.Type(value = MyFirstClass.class, name = "firstClassName"),
    @JsonSubTypes.Type(value = MySecondClass.class, name = "secondClassName")}) 

値が文字列ではなく整数の場合、これを行う方法の簡単な例が見つかりません。たとえば、JSON に "methodName":"firstClassName" の代わりに "methodName":1 が含まれている場合、デシリアライズするクラスをどのように選択すればよいでしょうか?

4

2 に答える 2

1

それを行う「簡単な」方法はありません。シリアル化メカニズムの独自の実装と、逆シリアル化用の実装を作成する必要があります。このような実装の危険性は非常に高いため、typeinfo プロパティを引用して文字列として使用する方がよいでしょう。

于 2013-07-31T18:54:22.450 に答える