2011-08-24 13 views
8

प्रश्न में जेएसओएन एक विश्वसनीय सेवा से पढ़ा जा रहा है, और मैं डिबगिंग उद्देश्यों के लिए इसे प्रिंट करना चाहता हूं (कंसोल के लिए, हालांकि .gsp में भी ठीक होगा)। ग्रोवी 1.3.7 (अगस्त 2011 तक चालू) ग्रोवी 1.7.8 का उपयोग करता है (जिसमें जेसनऑटपुट 1.8 में पेश नहीं किया गया है)Grails 1.3.7 में JSON सुंदर प्रिंट करना संभव है?

नोट मैं वर्तमान में इसे इस तरह पढ़ रहा हूं, जिसे मैं विश्वास नहीं कर रहा हूं 'grooviest' या grail-est 'करने का तरीका - शायद मैं कन्वर्टर्स का लाभ उठा सकता हूं और अलग-अलग प्रिंटिंग कर सकता हूं? कोड नमूना की सराहना की जाएगी।

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

उत्तर

14

आप toString(int indentFactor) विधि के साथ JSON को सुंदर प्रिंट कर सकते हैं। उदाहरण:

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

वाह, धन्यवाद, सरल। – Peter

5

आप grails.converters.JSON (जो JSON के लिए सबसे अधिक इस्तेमाल किया पुस्तकालय है) का उपयोग कर सकते हैं:,

अपने config.groovy फ़ाइल में पंक्ति जोड़ें सत्य पर prettyPrint स्थापित करने के लिए:

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()" 
3

आप एक Grails नियंत्रक में हैं और रेंडर करने के लिए योजना बना रहे हैं

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

मुझे लगता है कि समाधान मिला:: json, तो आप कुछ इस तरह (Grails 2.3.5 का प्रयोग करके) का उपयोग http://www.intelligrape.com/blog/2012/07/16/rendering-json-with-formatting/

0

अलावा सेट डिफ़ॉल्ट से सुंदर 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 में परीक्षण किया गया।

संबंधित मुद्दे