JSON形式の複雑なオブジェクトを期待するRESTコントローラーがあります。
たとえば、A.classにはB.classのコレクションとの関連付けがあります。
class A {
private List<B> values;
...
}
class B {
private String name;
...
}
簡略化されたコントローラーは次のようになります。
def create(){
def jsonObject = request.JSON;
A a = new A(jsonObject);
....
}
たとえば、次のJSONをコントローラーに送信します。
{"values":[{"name":"test1"},{"name":"test2"}]}
コントローラでは、jsonObjectにはJsonArrayとしての「values」属性があります。GrailsバインディングコンストラクターがJsonArrayの「値」をリストの「値」にバインドすることを期待していましたが、そうではありません。Spring MVCでは、JacksonMapperが私に代わって仕事をしてくれます。私はそのようなものが好きです。
JsonArrayを手動で繰り返し、配列内のアイテムを自分でドメインオブジェクトに変換する必要がありますか?