2011-08-24 11 views
8

El JSON en cuestión se está leyendo desde un servicio RESTful, y me gustaría imprimirlo (a la consola, aunque en .gsp también estaría bien) para fines de depuración. Groovy 1.3.7 (actual a partir de agosto de 2011) utiliza Groovy 1.7.8 (que no tiene el JsonOutput introducido en 1.8)¿Es posible imprimir bastante JSON en Grails 1.3.7?

Nota Actualmente estoy leyéndolo de esta manera, lo que no estoy seguro es el 'más genial' o la forma más fácil de hacerlo, quizás podría aprovechar los convertidores y la impresión bonita si se hace de otra manera? La muestra de código sería apreciada.

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

Respuesta

14

Puede imprimir bastante JSON con el método toString(int indentFactor). Ejemplo:

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, gracias, simple. – Peter

5

Puede utilizar grails.converters.JSON (que es la biblioteca más utilizado para JSON):

En el archivo config.groovy, agregue la línea para establecer prettyprint true:

grails.converters.default.pretty.print=true 

Luego, en su controlador:

import grails.converters.* 

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

Aparte de conjunto predeterminado de impresión bonita en Config.groovy, toString de JSON() acepta un método parámetro booleano. Controla si imprimir bien el resultado o no.

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

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

Probado en Grails 1.3.9.

Cuestiones relacionadas