Google ডেটা প্রোটোকলে JSON ব্যবহার করা

সতর্কতা : এই পৃষ্ঠাটি Google-এর পুরানো API, Google Data APIs সম্পর্কে; এটি শুধুমাত্র Google Data APIs ডিরেক্টরিতে তালিকাভুক্ত APIগুলির সাথে প্রাসঙ্গিক, যার মধ্যে অনেকগুলি নতুন API দিয়ে প্রতিস্থাপিত হয়েছে৷ একটি নির্দিষ্ট নতুন API সম্পর্কে তথ্যের জন্য, নতুন API এর ডকুমেন্টেশন দেখুন। একটি নতুন API-এর সাহায্যে অনুরোধ অনুমোদনের বিষয়ে তথ্যের জন্য, Google অ্যাকাউন্ট প্রমাণীকরণ এবং অনুমোদন দেখুন।

এই নিবন্ধটি JSON কভার করে কারণ এটি Google ডেটা প্রোটোকলের মধ্যে ব্যবহৃত হয়। প্রোটোকল সম্পর্কে আরও তথ্যের জন্য, বিকাশকারীর নির্দেশিকা দেখুন।

আপনি যেকোন প্রোগ্রামিং ভাষার সাথে JSON ব্যবহার করতে পারেন, তবে এই নথিতে উদাহরণগুলি জাভাস্ক্রিপ্টে রয়েছে।

JSON ফিড এবং XML ফিড সম্পর্কে

একটি Google ডেটা পরিষেবা নিম্নলিখিত নিয়মগুলি ব্যবহার করে XML ফিড রূপান্তর করে একটি JSON- ফর্ম্যাট ফিড তৈরি করে:

মৌলিক

  • ফিড একটি JSON অবজেক্ট হিসাবে উপস্থাপিত হয়; প্রতিটি নেস্টেড এলিমেন্ট বা অ্যাট্রিবিউটকে অবজেক্টের নাম/মান প্রপার্টি হিসেবে উপস্থাপন করা হয়।
  • গুণাবলী স্ট্রিং বৈশিষ্ট্যে রূপান্তরিত হয়।
  • শিশু উপাদানগুলি অবজেক্ট বৈশিষ্ট্যে রূপান্তরিত হয়।
  • একাধিকবার প্রদর্শিত হতে পারে এমন উপাদানগুলিকে অ্যারে বৈশিষ্ট্যে রূপান্তরিত করা হয়।
  • ট্যাগের পাঠ্য মান $t বৈশিষ্ট্যে রূপান্তরিত হয়।

নামস্থান

  • যদি একটি উপাদানের একটি নামস্থান উপনাম থাকে, তাহলে উপনাম এবং উপাদান "$" ব্যবহার করে সংযুক্ত করা হয়। উদাহরণস্বরূপ, ns:element ns$element হয়ে যায়।

এক্সএমএল

  • XML সংস্করণ এবং এনকোডিং বৈশিষ্ট্যগুলি যথাক্রমে রুট উপাদানের সংস্করণ এবং এনকোডিং বৈশিষ্ট্যগুলিতে রূপান্তরিত হয়।

নিম্নলিখিত উদাহরণটি একই ফিডের XML এবং 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 ফিড ব্যবহার করা

এটম হল গুগল ডেটার ডিফল্ট ফর্ম্যাট। আপনি যদি আপনার অনুরোধে একটি alt প্যারামিটার নির্দিষ্ট না করেন, তাহলে আপনি একটি এটম ফিড পাবেন।

দ্রষ্টব্য : Google ডেটা ক্লায়েন্ট লাইব্রেরিগুলি বর্তমানে JSON সমর্থন করে না৷

JSON আউটপুট

JSON ফর্ম্যাটে একটি প্রতিক্রিয়া অনুরোধ করতে, alt=json প্যারামিটার ব্যবহার করুন।

উদাহরণস্বরূপ, JSON ফর্ম্যাটে Google-এর ডেভেলপার ক্যালেন্ডার ফিডের অনুরোধ করতে, নিম্নলিখিত ক্যোয়ারী পাঠান:

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

JSON-ইন-স্ক্রিপ্ট আউটপুট

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

কলব্যাক ফাংশন ব্যবহার করে আপনি সাধারণ ক্লায়েন্ট সাইড জাভাস্ক্রিপ্টে সম্মুখীন হতে পারেন এমন কিছু ক্রস-ডোমেন নিরাপত্তা সংক্রান্ত সমস্যার সমাধান করতে পারবেন। সাধারণত ব্রাউজার আপনাকে ডোমেনে ফাইল লোড করা থেকে বাধা দেয় কারণ সম্ভাব্য নিরাপত্তা গর্ত এবং ক্রস ডোমেন আক্রমণের ফলে হতে পারে।

JSON-ইন-স্ক্রিপ্ট ফর্ম্যাট আপনাকে ক্লায়েন্টের একটি স্ক্রিপ্ট ট্যাগে প্রতিক্রিয়া লোড করার মাধ্যমে এই সীমাবদ্ধতাগুলিকে ঘিরে রাখতে দেয়৷ এর মানে হল যে আপনি সেই পৃষ্ঠায় আপনার জাভাস্ক্রিপ্ট কোডের অন্যান্য জায়গায় প্রতিক্রিয়া ব্যবহার করতে পারেন। পৃষ্ঠাটি লোড হলে 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 Data API-এর সাথে JSON কীভাবে ব্যবহার করবেন তার কাজের উদাহরণের জন্য, নমুনা পৃষ্ঠাটি দেখুন।

অতিরিক্ত সম্পদ

অনেকগুলি বাহ্যিক সংস্থান রয়েছে যা আপনি JSON সম্পর্কে আরও জানতে এবং ওয়েব অ্যাপ্লিকেশনগুলিতে JSON ব্যবহার করার জন্য পরীক্ষা করতে চাইতে পারেন৷

উপরে ফিরে যাও