Можно ли печатать JSON в Grails 1.3.7? - PullRequest
8 голосов
/ 25 августа 2011

JSON, о котором идет речь, читается из службы RESTful, и я хотел бы распечатать его (на консоль, хотя в .gsp тоже подойдет) для целей отладки. В Groovy 1.3.7 (по состоянию на август 2011 г.) используется Groovy 1.7.8 (в котором отсутствует JsonOutput, введенный в 1.8)

Заметьте, я сейчас читаю это примерно так, но я не уверен, что это «самый крутой или самый лучший» способ сделать это - возможно, я мог бы воспользоваться конвертерами и красивой печатью, если бы сделал иначе? Пример кода будет оценен.

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

Ответы [ 4 ]

14 голосов
/ 25 августа 2011

Вы можете красиво распечатать JSON с помощью метода toString(int indentFactor). Пример:

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"
}
5 голосов
/ 02 ноября 2011

Вы можете использовать grails.converters.JSON (это наиболее часто используемая библиотека для JSON):

В вашем файле config.groovy добавьте строку, чтобы установить prettyPrint в true:

grails.converters.default.pretty.print=true

Тогда в вашем контроллере:

import grails.converters.*

def serviceURL = new URL(theURL)
def json = JSON.parse(serviceURL.text)
println "JSON RESPONSE: ${json.toString()"
4 голосов
/ 24 февраля 2014

Если вы находитесь в контроллере Grails и планируете рендерить json, то вы используете что-то вроде этого (используя Grails 2.3.5):

public prettyJson() {
    JSON json = ['status': 'OK'] as JSON
    json.prettyPrint = true
    json.render response
}

Я нашел это решение здесь: http://www.intelligrape.com/blog/2012/07/16/rendering-json-with-formatting/

0 голосов
/ 15 июня 2017

Помимо установки красивой печати по умолчанию в Config.groovy, метод JSON toString () принимает один логический параметр.Он контролирует, будет ли печатать результат или нет.

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

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

Проверено в Grails 1.3.9.

...