我想教我的域类自动将 JSON.parse(someJSON) 的结果转换为也是自定义域类的成员。
给定这些域类:
class Person {
Long id
String name
static hasMany = [aliases: PersonAlias]
}
class PersonAlias {
Person person
Long id
String name
}
这个 JSON 代表一个带有一些 PersonAliases 的人:
{
"id":20044397,
"name":"John Smith",
"aliases":[{"id":13376,"name":"Johnny Smith"},{"id":13377,"name":"J. Smith"}]
}
我想保持控制器简单,例如:
class PersonController {
def saveViaAjax = {
def props = JSON.parse(params.JSON)
Person p = Person.get(props.id)
p.properties = props
p.save(flush: true)
}
}
但遗憾的是我收到了这个错误:
无法将类型“org.codehaus.groovy.grails.web.json.JSONArray”的属性值转换为属性“别名”所需的类型“java.util.Set”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [org.codehaus.groovy.grails.web.json.JSONObject] 的值转换为属性“别名 [0]”所需的类型 [heavymeta.PersonAlias]:没有匹配的编辑器或找到转换策略
所以,我想教我的领域类如何将 JSON 数据自动转换为 PersonAlias 实例。我想避免在将控制器中的数据传递给域对象之前对其进行格式化。我如何实现这些目标?