ग्रूवी - JSON

इस अध्याय में बताया गया है कि हम JSON ऑब्जेक्ट्स को पार्स और निर्मित करने के लिए Groovy भाषा का उपयोग कैसे कर सकते हैं।

JSON के कार्य

अनु क्रमांक समारोह और पुस्तकालय
1

JsonSlurper

JsonSlurper एक ऐसा वर्ग है जो ग्रोन डेटा में JSON टेक्स्ट या रीडर सामग्री को पार्स करता है

नक्शे, सूचियों और आदिम प्रकार जैसे कि इंटीजर, डबल, बूलियन और स्ट्रिंग जैसी संरचनाएं।

2

JsonOutput

यह विधि JSON स्ट्रिंग्स में ग्रूवी वस्तुओं को क्रमबद्ध करने के लिए जिम्मेदार है।

JsonSlurper का उपयोग कर डेटा पार्स करना

JsonSlurper एक ऐसा वर्ग है जो ग्रोवी डेटा स्ट्रक्चर्स जैसे मैप्स, सूचियों और आदिम प्रकारों जैसे इंटेगर, डबल, बुलियन और स्ट्रिंग में JSON टेक्स्ट या रीडर सामग्री को पार्स करता है।

वाक्य - विन्यास

def slurper = new JsonSlurper()

JSON स्लॉपर पाठ या पाठक सामग्री को सूचियों और मानचित्रों की एक डेटा संरचना में देता है।

JsonSlurper वर्ग पार्सर कार्यान्वयन के लिए कुछ प्रकारों के साथ आता है। कभी-कभी कुछ स्ट्रिंग्स पार्स करने की बात आने पर आपकी अलग-अलग आवश्यकताएं हो सकती हैं। आइए एक उदाहरण लेते हैं जिसमें किसी को JSON पढ़ने की आवश्यकता होती है जिसे वेब सर्वर से प्रतिक्रिया से वापस किया जाता है। ऐसे में पार्सर JsonParserLax वैरिएंट का उपयोग करना फायदेमंद है। यह पार्सी JSON पाठ में टिप्पणियों के साथ-साथ कोई उद्धरण तार आदि की अनुमति देता है। इस प्रकार के पार्सर को निर्दिष्ट करने के लिए आपको JsonSlurper के ऑब्जेक्ट को परिभाषित करते समय JsonParserType.LAX पार्सर प्रकार का उपयोग करने की आवश्यकता होती है।

आइए नीचे दिए गए इस का एक उदाहरण देखें। उदाहरण HTTP मॉड्यूल का उपयोग करके एक वेब सर्वर से JSON डेटा प्राप्त करने के लिए है। इस प्रकार के ट्रैवर्सल के लिए, सबसे अच्छा विकल्प है कि पार्सर टाइप को JsonParserLax वेरिएंट में सेट किया जाए।

http.request( GET, TEXT ) {
   headers.Accept = 'application/json'
   headers.'User-Agent' = USER_AGENT
	
   response.success = { 
      res, rd ->  
      def jsonText = rd.text 
		
      //Setting the parser type to JsonParserLax
      def parser = new JsonSlurper().setType(JsonParserType.LAX)
      def jsonResp = parser.parseText(jsonText)
   }
}

इसी प्रकार निम्नलिखित अतिरिक्त पार्सर प्रकार ग्रूवी में उपलब्ध हैं -

  • JsonParserCharArray पार्सर मूल रूप से JSON स्ट्रिंग लेता है और अंतर्निहित वर्ण सरणी पर कार्य करता है। मूल्य रूपांतरण के दौरान यह चरित्र उप-सरणियों ("चॉपिंग" के रूप में जाना जाता एक तंत्र) को कॉपी करता है और व्यक्तिगत रूप से उन पर काम करता है।

  • JsonFastParser JsonParserCharArray का एक विशेष संस्करण है और सबसे तेज़ पार्सर है। JsonFastParser को इंडेक्स-ओवरले पार्सर के रूप में भी जाना जाता है। दिए गए JSON स्ट्रिंग के पार्सिंग के दौरान, नए चार ऐरे या स्ट्रिंग इंस्टेंसेस बनाने से बचने के लिए जितना संभव हो उतना संभव प्रयास करता है। यह केवल अंतर्निहित मूल चरित्र सरणी की ओर संकेत करता है। इसके अलावा, यह यथासंभव देर से वस्तु निर्माण को धता बताती है।

  • JsonParserUsingCharacterSource बहुत बड़ी फ़ाइलों के लिए एक विशेष पार्सर है। यह निरंतर जेसीएल विशेषताओं के साथ बड़ी JSON फ़ाइलों (इस मामले में 2MB आकार से अधिक बड़ी फ़ाइलों) को पार्स करने के लिए "वर्ण विंडोिंग" नामक तकनीक का उपयोग करता है।

पार्सिंग पाठ

आइए कुछ उदाहरणों पर गौर करें कि हम JsonSlurper वर्ग का उपयोग कैसे कर सकते हैं।

import groovy.json.JsonSlurper 

class Example {
   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      def object = jsonSlurper.parseText('{ "name": "John", "ID" : "1"}') 
		
      println(object.name);
      println(object.ID);
   } 
}

उपरोक्त उदाहरण में, हम हैं -

  • पहले JsonSlurper वर्ग का एक उदाहरण बनाना

  • हम तब JSON पाठ को पार्स करने के लिए JsonSlurper वर्ग के parseText फ़ंक्शन का उपयोग कर रहे हैं।

  • जब हमें ऑब्जेक्ट मिलता है, तो आप देख सकते हैं कि हम वास्तव में कुंजी के माध्यम से JSON स्ट्रिंग में मानों को एक्सेस कर सकते हैं।

उपरोक्त कार्यक्रम का आउटपुट नीचे दिया गया है -

John 
1

इंजीर्स की पार्सिंग लिस्ट

आइए JsonSlurper पार्सिंग विधि के एक और उदाहरण पर एक नज़र डालते हैं। निम्नलिखित उदाहरण में, हम पूर्णांकों की एक सूची तैयार कर रहे हैं। आप देखेंगे कि निम्नलिखित कोडेथैट से हम प्रत्येक की सूची विधि का उपयोग कर सकते हैं और इसे बंद कर सकते हैं।

import groovy.json.JsonSlurper 
class Example {
   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      Object lst = jsonSlurper.parseText('{ "List": [2, 3, 4, 5] }')
      lst.each { println it }
   } 
}

उपरोक्त कार्यक्रम का आउटपुट नीचे दिया गया है -

List=[2, 3, 4, 5]

आदिम डेटा प्रकारों की पार्सिंग सूची

JSON पार्सर भी आदिम डेटा प्रकार के स्ट्रिंग, संख्या, ऑब्जेक्ट, ट्रू, गलत और अशक्त का समर्थन करता है। JsonSlurper वर्ग इन JSON प्रकारों को संबंधित Groovy प्रकारों में परिवर्तित करता है।

निम्न उदाहरण दिखाता है कि JSON स्ट्रिंग को पार्स करने के लिए JsonSlurper का उपयोग कैसे करें। और यहां आप देख सकते हैं कि JsonSlurper व्यक्तिगत वस्तुओं को उनके संबंधित आदिम प्रकारों में पार्स करने में सक्षम है।

import groovy.json.JsonSlurper 
class Example {

   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      def obj = jsonSlurper.parseText ''' {"Integer": 12, "fraction": 12.55, "double": 12e13}'''
		
      println(obj.Integer);
      println(obj.fraction);
      println(obj.double); 
   } 
}

उपरोक्त कार्यक्रम का आउटपुट नीचे दिया गया है -

12 
12.55 
1.2E+14

JsonOutput

अब बात करते हैं कि Json में आउटपुट कैसे प्रिंट करें। यह JsonOutput विधि द्वारा किया जा सकता है। यह विधि JSON स्ट्रिंग्स में ग्रूवी वस्तुओं को क्रमबद्ध करने के लिए जिम्मेदार है।

वाक्य - विन्यास

Static string JsonOutput.toJson(datatype obj)

Parameters - पैरामीटर डेटाटाइप का एक ऑब्जेक्ट हो सकता है - नंबर, बुलियन, चरित्र, स्ट्रिंग, दिनांक, नक्शा, क्लोजर आदि।

Return type - रिटर्न टाइप एक जसन स्ट्रिंग है।

उदाहरण

निम्नलिखित एक सरल उदाहरण है कि यह कैसे प्राप्त किया जा सकता है।

import groovy.json.JsonOutput 
class Example {
   static void main(String[] args) {
      def output = JsonOutput.toJson([name: 'John', ID: 1])
      println(output);  
   }
}

उपरोक्त कार्यक्रम का आउटपुट नीचे दिया गया है -

{"name":"John","ID":1}

JsonOutput का उपयोग सादे पुरानी ग्रूवी वस्तुओं के लिए भी किया जा सकता है। निम्नलिखित उदाहरण में, आप देख सकते हैं कि हम वास्तव में JsonOutput पद्धति के छात्र के प्रकार की वस्तुओं को पारित कर रहे हैं।

import groovy.json.JsonOutput  
class Example {
   static void main(String[] args) {
      def output = JsonOutput.toJson([ new Student(name: 'John',ID:1),
         new Student(name: 'Mark',ID:2)])
      println(output);  
   } 
}
 
class Student {
   String name
   int ID; 
}

उपरोक्त कार्यक्रम का आउटपुट नीचे दिया गया है -

[{"name":"John","ID":1},{"name":"Mark","ID":2}]