2011-08-24 9 views
8

Dany JSON jest odczytywany z usługi RESTful, a ja chciałbym go wydrukować (do konsoli, chociaż w .gsp byłoby również w porządku) do celów debugowania. Groovy 1.3.7 (obecny od sierpnia 2011 r.) Używa Groovy 1.7.8 (który nie ma JsonOutput wprowadzonego w 1.8)Możliwość wydrukowania JSON w Grails 1.3.7?

Uwaga Obecnie czytam to w ten sposób, co do którego nie jestem przekonany, jest "najzabawniejszym" lub graal-est "sposób to zrobić - może mógłbym skorzystać z konwerterów i ładnego drukowania, jeśli zrobi się inaczej? Próbka kodu byłaby doceniona.

def serviceURL = new URL(theURL) 
    def json = new JSONObject(serviceURL.text) 
    println json 

Odpowiedz

14

Możesz całkiem wydrukować JSON metodą toString(int indentFactor). Przykład:

def json = new JSONObject() 
json.put('foo', 'bar') 
json.put('blat', 'greep') 
println json 
===>{"foo":"bar","blat","greep"} 
println json.toString(4) 
===>{ 
    "foo": "bar", 
    "blat": "greep" 
} 
+0

Wow, dzięki, proste. – Peter

5

Można użyć grails.converters.JSON (który jest najczęściej używany biblioteka dla JSON):

W pliku config.groovy, dodać linię ustawić prettyprint true:

grails.converters.default.pretty.print=true 

Następnie w kontrolerze:

import grails.converters.* 

def serviceURL = new URL(theURL) 
def json = JSON.parse(serviceURL.text) 
println "JSON RESPONSE: ${json.toString()" 
0

Oprócz domyślny zestaw całkiem drukować Config.groovy, JSON za toString() metoda przyjmuje jeden parametr boolowski. Kontroluje, czy ładny wydrukować wynik, czy nie.

import grails.converters.* 
import my.data.* 

def accountJson = Account.get(1001) as JSON 
println(accountJson.toString(true)) 
println(accountJson.toString(false)) 

Testowany w Grails 1.3.9.