3

有没有一种通用的方法可以递归地从 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)

如果有一个通用的方法会很好。

谢谢你

4

1 回答 1

0

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

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

编辑:省略了一个结束括号

于 2012-08-13T20:43:44.317 回答