JSON 経由で Android クライアントにデータを送信するために使用されている Groovy/Grails Web サイトがあります。Android クライアントと Groovy/Grails Web サイトの両方を作成しました。JSON で同じオブジェクトを出力できます。
JSON出力をJavaオブジェクトにマッピングすることで、Androidでそれぞれのオブジェクトを正常に作成できますが、JSON出力を使用してGroovy/Grailsで新しいドメインオブジェクトを作成できるかどうか疑問に思っていましたか? オブジェクトが作成されるように、JSON 出力をコントローラー アクションに渡す方法はありますか?
送信したい JSON の例を次に示します。
{
"class":"org.icc.callrz.BusinessCard.BusinessCard",
"id":1,
"businessCardDesigns":[],
"emailAddrs":[
{
"class":"org.icc.callrz.BusinessCard.EmailAddress",
"id":1,
"address":"chris@krslynx.com",
"businessCard":{
"_ref":"../..",
"class":"org.icc.callrz.BusinessCard.BusinessCard"
},
"index":0,
"type":{
"enumType":"org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType",
"name":"H"
}
},
{
"class":"org.icc.callrz.BusinessCard.EmailAddress",
"id":2,
"address":"cb@i-cc.cc",
"businessCard":{
"_ref":"../..",
"class":"org.icc.callrz.BusinessCard.BusinessCard"
},
"index":1,
"type":{
"enumType":"org.icc.callrz.BusinessCard.EmailAddress$EmailAddressType",
"name":"W"
}
}
]
}
「クラス」は保存先のドメインに一致し、ID はドメインの ID であり、businessCardDesigns および emailAddrs 内の各項目は、同様の方法を使用して保存する必要があります (ドメインでは、businessCardDesigns および emailAddrs は ArrayLists です)。 )。よろしくお願いします!
解決:
@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> createFromJson(@RequestBody String json) {
Owner.fromJsonToOwner(json).persist();
return new ResponseEntity<String>(HttpStatus.CREATED);
}