我有一个 Groovy/Grails 网站,用于通过 JSON 向 Android 客户端发送数据。我已经创建了 Android 客户端和 Groovy/Grails 网站;他们可以在 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);
}