2014-02-13 81 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)。