2012-07-19 119 views
3

有没有一种常规的方式来创建Grails对象的JSON递归?GRAILS:创建域类对象(嵌套)JSON

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

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

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

编辑:冷落的结局括号