我的主 Controller 中有一个方法,该方法返回要渲染为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吗?
最佳答案
从方法中获得的值是grails.converters.JSON
,它本身不是可直接访问的JSON树,而只是一个对象,该对象知道如何在需要时将自身序列化为JSON。如果要直接访问JSON树结构,则需要告诉grails.converters.JSON
对象进行序列化,然后将该JSON传递给JSON.parse
以将其转换为JSONElement
(或其子类之一,在这种情况下可能是JSONObject
)。
关于json - Grails JSON转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21758700/