私はPlay Framework 2.5(Java)とフォームデータバインディング(Spring Frameworkから)を使用してREST Webサービスを開発しています。 私はこのAPIにかなり慣れており、検証制約(例:必須)を正式化する方法と同様に、BodyParser APIの使用を避けたいと考えています。プレイフレームワークのタイプ選択JSONフォーム
は、私がこのようなJSON要求を解析する必要があります:文字列(Javaでjava.lang.Stringで)と、文字列の配列:
{
"elements": [
{
"val": "1"
},
{
"val": ["1","2","3"]
}
]
}
問題は「valが」二つの異なるタイプを受け入れるということです(私のコードではjava.util.List)。
JavaコードでこのようなJSONフォームを "形式的に"モデル化できますか? "val"属性に異なるタイプの2つの異なるサブクラスによって実装された抽象クラス(generic)を使用しようとしましたが、Springがオブジェクトのインスタンス化に失敗しました(BeanInstantiationException)。ここで
は、現在のデータモデルである:
public class Foo {
@Constraints.Required
public List<Fii> elements;
}
public class Fii {
@Constraints.Required
// Which type ? Object ?
public ? val;
}
ありがとうございました。私はデータマッパーがJavaの型だけを見ていると思っていたので、Java Object型がJSON構造体に適応するかどうかはわかりませんでした。私は実際に、各Valueクラスをinstanceofテストによって特定のクラスに変換することができます。 –
@Alexandre LEBRUN私の答えがあなたを助けたことを聞いてよかった! –