我的主控制器中有一个方法,它返回一个我想呈现为JSON的字符串。 所以我导入“import grails.converters.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了?
答案 0 :(得分:2)
从方法中返回的值是grails.converters.JSON
,它不是可直接访问的JSON树,而只是一个知道如何在需要时将自身序列化为JSON的对象。如果您想直接访问JSON树结构,那么您需要告诉grails.converters.JSON
对象序列化自身,然后将该JSON传递给JSON.parse
以将其转换为JSONElement
(或其中之一)它的子类,在这种情况下可能是JSONObject
)。