2014-02-13 58 views
1

我有一个方法在我的主控制器返回一个字符串,我想呈现为JSON。 所以我输入“进口grails.converters.JSON”,并呼吁Grails JSON转换器

myMethod() as JSON 

,并能正常工作。但是当我需要在我的集成测试中获得json响应的一些细节时。

所以在我的集成测试我有:

void testfoo() { 
    def bar = controller.myMethod(); 
    def bar.name; //fails 
    JSON.parse(bar.toString()).name; // doesn't fail 
    .... 
    .. 
} 

任何想法,为什么我需要将其转换为字符串,然后再以一个JSON,因为它已经是一个JSON?

回答

2

您从方法中获得的值是grails.converters.JSON,它不是一个可直接访问的JSON树,而只是一个知道如何在需要时将自身序列化为JSON的对象。如果你想直接访问JSON树结构,那么你需要告诉grails.converters.JSON对象序列化自己,然后将该JSON传递给JSON.parse将其变成JSONElement(或其中一个子类,在这种情况下可能是JSONObject)。