是否有一种以递归方式从JSON中创建Grails-Objects的常规方法?
实施例
class Person {String name, String surname ....}
class Text { String content, Person owner }
从以下JSON创建对象的最简单方法是什么:
{
"class":"Text",
"content":"test test test",
"owner":{
"class":"Person",
"id":1
}
}
甚至出自:
{
"class":"Text",
"content":"test test test",
"owner":{
"class":"Person",
"name":"foo",
"surname":"bar"
}
}
一个简单的创建(没有嵌套类)就像魅力一样:
Person p = new Person(JSON.parse(responseBody))
另一个问题是:如果无法进行嵌套创建,我该如何修改反序列化过程?
目前我通过手动分配避免了这个问题:
def jsonObj = new JsonSlurper().parseText( element.toString() )
Person.get(jsonObj.owner.id)
如果存在通用方法,那就太好了。
谢谢
答案 0 :(得分:0)
我之前没有这样做,但我想你可以使用反射。
def myClass = Class.forName("${owner.class}")
def classLoader = this.getClass().getClassLoader()
def myDomain = (myClass, true, classLoader).newInstance())
编辑:省略一个结束括号