Google डेटा प्रोटोकॉल में JSON का इस्तेमाल करना

चेतावनी: यह पेज, Google के पुराने एपीआई यानी कि Google Data API के बारे में है. यह सिर्फ़ उन एपीआई के बारे में है जो Google Data API डायरेक्ट्री में मौजूद हैं. इनमें से कई एपीआई को नए एपीआई से बदला गया है. किसी नए एपीआई के बारे में जानकारी पाने के लिए, उस नए एपीआई के दस्तावेज़ देखें. नए एपीआई से अनुरोधों को अनुमति देने के बारे में जानकारी पाने के लिए, Google खाते की पुष्टि करना और अनुमति देना देखें.

इस लेख में JSON का इस्तेमाल करके बताया गया है, क्योंकि इसका इस्तेमाल Google डेटा प्रोटोकॉल में किया जाता है. प्रोटोकॉल के बारे में ज़्यादा जानकारी के लिए, डेवलपर की गाइड देखें.

JSON का इस्तेमाल किसी भी प्रोग्रामिंग भाषा के साथ किया जा सकता है. हालांकि, इस दस्तावेज़ में उदाहरण के तौर पर JavaScript दी गई है.

JSON फ़ीड और एक्सएमएल फ़ीड के बारे में जानकारी

Google डेटा सेवा, नीचे दिए गए नियमों का इस्तेमाल करके एक्सएमएल फ़ीड को बदलकर JSON-फ़ॉर्मैट वाला फ़ीड बनाती है:

सामान्य

  • फ़ीड को एक JSON ऑब्जेक्ट के तौर पर दिखाया जाता है. नेस्ट किए गए हर एलिमेंट या एट्रिब्यूट को, ऑब्जेक्ट के नाम/वैल्यू वाली प्रॉपर्टी के तौर पर दिखाया जाता है.
  • एट्रिब्यूट, स्ट्रिंग प्रॉपर्टी में बदल दिए जाते हैं.
  • चाइल्ड एलिमेंट, ऑब्जेक्ट प्रॉपर्टी में बदल जाते हैं.
  • एक से ज़्यादा बार दिखने वाले एलिमेंट, श्रेणी की प्रॉपर्टी में बदल दिए जाते हैं.
  • टैग की टेक्स्ट वैल्यू $t प्रॉपर्टी में बदली जाती हैं.

नेमस्पेस

  • अगर किसी एलिमेंट के नेमस्पेस का उपनाम है, तो "$" का इस्तेमाल करके, उपनाम और एलिमेंट को जोड़ा जाता है. उदाहरण के लिए, ns:element ns$element हो जाता है.

एक्सएमएल

  • एक्सएमएल वर्शन और एन्कोडिंग एट्रिब्यूट, रूट एलिमेंट के वर्शन और कोड में बदलने के एट्रिब्यूट में बदल जाते हैं.

नीचे दिए गए उदाहरण में एक ही फ़ीड के एक्सएमएल और JSON वर्शन दिखाए गए हैं. तुलना करने के लिए, उन्हें टैब में दिखाया जाता है.

एक्सएमएल

<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
    xmlns:gd="http://schemas.google.com/g/2005"
    xmlns:gCal="http://schemas.google.com/gCal/2005">
  <id>...</id>
  <updated>2006-11-12T21:25:30.000Z</updated>
  <title type="text">Google Developer Events</title>
  <subtitle type="text">The calendar contains information about upcoming
    developer conferences at which Google will be speaking, along with
    other developer-related events.</subtitle>
  <link rel="http://schemas.google.com/g/2005#feed"
    type="application/atom+xml" href="..." />
  <link rel="self" type="application/atom+xml" href="..." />
  <author>
    <name>Google Developer Calendar</name>
    <email>developer-calendar@google.com</email>
  </author>
  <generator version="1.0"
    uri="http://www.google.com/calendar">Google Calendar</generator>
  <openSearch:startIndex>1</openSearch:startIndex>
  <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
  <gCal:timezone value="America/Los_Angeles" />
    
  <entry>
    <id>...</id>
    <published>2006-11-12T21:25:30.000Z</published>
    <updated>2006-11-12T21:25:30.000Z</updated>
    <category scheme="..." term="..." />
    <title type="text">WebmasterWorld PubCon 2006:
      Google Developer Tools in General</title>
    <content type="text">Google is sponsoring at 
      <a href="http://www.pubcon.com/">WebmasterWorld PubCon 2006</a>. Come and
      visit us at the booth or join us for an evening demo reception where we
      will be talking "5 ways to enhance your website with Google Code". 
      After all, it is Vegas, baby! See you soon.</content>
    <link rel="alternate" type="text/html" href="..." title="alternate" />
    <link rel="self" type="application/atom+xml" href="..." />
    <author>
      <name>Google Developer Calendar</name>
      <email>developer-calendar@google.com</email>
    </author>
    <gCal:sendEventNotifications value="true" />
    <gd:comments>
       <gd:feedLink href="..." />
    </gd:comments>
    <gd:transparency value="..." />
    <gd:eventStatus value="..." />
    <gd:where valueString="3150 Paradise Road, Las Vegas, NV 89109" />
    <gd:when startTime="2006-11-15" endTime="2006-11-17">
      <gd:reminder minutes="10" />
    </gd:when>
  </entry>
  ...
</feed>
    

JSON

{
"version": "1.0", "encoding": "UTF-8", "feed": { "xmlns": "http://www.w3.org/2005/Atom", "xmlns$openSearch": "http://a9.com/-/spec/opensearchrss/1.0/", "xmlns$gd": "http://schemas.google.com/g/2005", "xmlns$gCal": "http://schemas.google.com/gCal/2005", "id": {"$t": "..."}, "updated": {"$t": "2006-11-12T21:25:30.000Z"}, "title": { "type": "text", "$t": "Google Developer Events" }, "subtitle": { "type": "text", "$t": "The calendar contains information about upcoming developer conferences at which Google will be speaking, along with other developer-related events." }, "link": [{ "rel": "...", "type": "application/atom+xml", "href": "..." },{ "rel": "self", "type": "application/atom+xml", "href": "..." }], "author": [{ "name": {"$t": "Google Developer Calendar"}, "email": {"$t": "developer-calendar@google.com"} }], "generator":{ "version": "1.0", "uri": "http://www.google.com/calendar", "$t": "Google Calendar" }, "openSearch$startIndex": {"$t": "1"}, "openSearch$itemsPerPage": {"$t": "25"}, "gCal$timezone": {"value": "America/Los_Angeles"}, "entry": [{ "id": {"$t": "..."}, "published": {"$t": "2006-11-12T21:25:30.000Z"}, "updated": {"$t": "2006-11-12T21:25:30.000Z"}, "category": [{ "scheme": "...", "term": "..." }], "title":{ "type": "text", "$t": "WebmasterWorld PubCon 2006: Google Developer Tools in General" }, "content": { "type": "text", "$t": "Google is sponsoring at <a href="http://www.pubcon.com/">WebmasterWorld PubCon 2006</a>. \nCome and visit us at the booth or join us for an evening demo reception where we will be talking "5 ways to enhance your website with Google Code".\nAfter all,\nit is Vegas, baby! See you soon." }, "link": [{ "rel": "alternate", "type": "text/html", "href": "...", "title": "alternate" },{ "rel": "self", "type": "application/atom+xml", "href": "..." }], "author": [{ "name": {"$t": "Google Developer Calendar"}, "email": {"$t": "developer-calendar@google.com"} }], "gd$transparency": {"value": "http://schemas.google.com/g/2005#event.opaque"}, "gd$eventStatus": {"value": "http://schemas.google.com/g/2005#event.confirmed"}, "gd$comments": {"gd$feedLink": {"href": "..."}}, "gCal$sendEventNotifications": {"value": "true"}, "gd$when": [{ "startTime": "2006-11-15", "endTime": "2006-11-17", "gd$reminder": [{"minutes": "10"}] }], "gd$where": [{"valueString": "3150 Paradise Road,Las Vegas,NV 89109"}]}, }] } }

JSON फ़ीड का अनुरोध करना और उनका इस्तेमाल करना

ऐटम, Google डेटा का डिफ़ॉल्ट फ़ॉर्मैट है. अगर अनुरोध में alt पैरामीटर नहीं दिया जाता है, तो आपको ऐटम फ़ीड मिलता है.

ध्यान दें: फ़िलहाल, Google डेटा क्लाइंट लाइब्रेरी में JSON की सुविधा उपलब्ध नहीं है.

JSON का आउटपुट

JSON फ़ॉर्मैट में जवाब का अनुरोध करने के लिए, alt=json पैरामीटर का इस्तेमाल करें.

उदाहरण के लिए, JSON फ़ॉर्मैट में Google के डेवलपर कैलेंडर फ़ीड का अनुरोध करने के लिए, यह क्वेरी भेजें:

http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json

JSON-in-script आउटपुट

JSON टैग को स्क्रिप्ट टैग में रैप करने के अनुरोध का अनुरोध करने के लिए, alt=json-in-script पैरामीटर का इस्तेमाल करें. साथ ही, callback=functionName पैरामीटर जोड़कर कॉलबैक फ़ंक्शन जोड़ें.

http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json-in-script&callback=myFunction

कॉलबैक फ़ंक्शन का इस्तेमाल करने से, आपको क्रॉस-डोमेन की कुछ ऐसी सुरक्षा से जुड़ी समस्याओं का सामना करना पड़ सकता है जो सामान्य क्लाइंट साइड JavaScript में हो सकती हैं. आम तौर पर, ब्राउज़र संभावित सुरक्षा कमियों और होने वाले क्रॉस डोमेन हमलों की वजह से आपको डोमेन में फ़ाइलें लोड करने से रोकते हैं.

JSON-in-script फ़ॉर्मैट, क्लाइंट पर स्क्रिप्ट टैग में जवाब लोड करके इन पाबंदियों के बारे में बताता है. इसका मतलब है कि इस रिस्पॉन्स का इस्तेमाल, उस पेज पर JavaScript कोड में दूसरी जगहों पर भी किया जा सकता है. पेज के लोड होने पर, JSON के आउटपुट लोड होते हैं. इसके लिए, किसी और तरीके का इस्तेमाल करने की ज़रूरत नहीं है.

नीचे दिया गया आसान काम करने वाला ऐप्लिकेशन इस तकनीक को दिखाता है:

<h3>Upcoming Google Developer Events</h3>

<div id="agenda"></div>

<script>
  function listEvents(root) {
    var feed = root.feed;
    var entries = feed.entry || [];
    var html = ['<ul>'];

    for (var i = 0; i < entries.length; ++i) {
      var entry = entries[i];
      var title = (entry.title.type == 'html') ? entry.title.$t : escape(entry.title.$t);
      var start = (entry['gd$when']) ? entry['gd$when'][0].startTime : "";	

      html.push('<li>', start, ' ', title, '</li>');
    }

    html.push('</ul>');
    document.getElementById("agenda").innerHTML = html.join("");
  }
</script>

<script src="http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json-in-script&callback=listEvents">
</script>

सैंपल

Google डेटा एपीआई के साथ JSON का इस्तेमाल करने के तरीके के उदाहरणों के लिए, नमूने वाला पेज देखें.

अतिरिक्त रिसॉर्स

JSON के बारे में ज़्यादा जानने और वेब ऐप्लिकेशन में JSON का इस्तेमाल करने के लिए, आपको कई बाहरी संसाधन देख सकते हैं.

वापस सबसे ऊपर जाएं