GRAILS:使用(嵌套)JSON创建域类对象

时间:2012-07-19 11:30:34

标签: json grails gorm

是否有一种以递归方式从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)

如果存在通用方法,那就太好了。

谢谢

1 个答案:

答案 0 :(得分:0)

我之前没有这样做,但我想你可以使用反射。

def myClass = Class.forName("${owner.class}")
def classLoader = this.getClass().getClassLoader()
def myDomain = (myClass, true, classLoader).newInstance())

编辑:省略一个结束括号