استفاده از JSON در پروتکل داده گوگل

اخطار : این صفحه درباره APIهای قدیمی Google، Google Data APIها است. فقط مربوط به APIهایی است که در فهرست راهنمای Google Data APIs فهرست شده اند، که بسیاری از آنها با APIهای جدیدتر جایگزین شده اند. برای اطلاعات در مورد یک API جدید خاص، به مستندات API جدید مراجعه کنید. برای اطلاعات در مورد تأیید درخواست‌ها با یک API جدیدتر، به تأیید اعتبار و مجوز حساب‌های Google مراجعه کنید.

این مقاله JSON را پوشش می دهد که در پروتکل داده گوگل استفاده می شود. برای اطلاعات بیشتر درباره پروتکل، راهنمای برنامه‌نویس را ببینید.

شما می توانید از JSON با هر زبان برنامه نویسی استفاده کنید، اما نمونه های این سند در جاوا اسکریپت هستند.

درباره فیدهای JSON و فیدهای XML

یک سرویس Google Data با تبدیل فید XML با استفاده از قوانین زیر یک فید با فرمت JSON ایجاد می کند:

پایه ای

  • فید به عنوان یک شی JSON نشان داده می شود. هر عنصر یا ویژگی تودرتو به عنوان یک ویژگی نام/مقدار شی نشان داده می شود.
  • ویژگی ها به ویژگی های رشته تبدیل می شوند.
  • عناصر فرزند به ویژگی های Object تبدیل می شوند.
  • عناصری که ممکن است بیش از یک بار ظاهر شوند به ویژگی های آرایه تبدیل می شوند.
  • مقادیر متنی تگ ها به ویژگی های $t تبدیل می شوند.

فضای نام

  • اگر عنصری دارای نام مستعار فضای نام باشد، نام مستعار و عنصر با استفاده از "$" به هم متصل می شوند. برای مثال، ns:element تبدیل به ns$element می شود.

XML

  • ویژگی های نسخه XML و رمزگذاری به ترتیب به ویژگی های نسخه و رمزگذاری عنصر ریشه تبدیل می شوند.

مثال زیر نسخه‌های XML و JSON یک فید را نشان می‌دهد. آنها برای ارائه مقایسه آسان، برگه شده اند.

XML

<?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

Atom قالب پیش فرض Google Data است. اگر پارامتر alt را در درخواست خود مشخص نکنید، یک فید Atom دریافت می کنید.

توجه : کتابخانه‌های سرویس گیرنده Google Data در حال حاضر از JSON پشتیبانی نمی‌کنند.

خروجی JSON

برای درخواست پاسخ با فرمت JSON، از پارامتر alt=json استفاده کنید.

برای مثال، برای درخواست فید تقویم توسعه‌دهنده Google در قالب JSON، عبارت زیر را ارسال کنید:

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

خروجی JSON-in-script

برای درخواست پاسخی که JSON را در یک تگ اسکریپت قرار می دهد، از پارامتر alt=json-in-script استفاده کنید و با افزودن پارامتر callback= functionName یک تابع callback اضافه کنید.

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

استفاده از توابع پاسخ به تماس به شما این امکان را می دهد که برخی از مسائل امنیتی بین دامنه ای را که ممکن است در جاوا اسکریپت سمت کلاینت معمولی با آن مواجه شوید، دور بزنید. معمولاً مرورگرها به دلیل حفره‌های امنیتی احتمالی و حملات متقابل دامنه‌ای که ممکن است منجر شود، از بارگیری فایل‌ها در دامنه‌ها جلوگیری می‌کنند.

فرمت JSON-in-script به شما این امکان را می دهد که با بارگذاری پاسخ در یک برچسب اسکریپت روی مشتری، این محدودیت ها را دور بزنید. این بدان معنی است که می توانید از پاسخ در مکان های دیگر در کد جاوا اسکریپت خود در آن صفحه استفاده کنید. خروجی 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>

نمونه ها

برای مثال‌های کاربردی نحوه استفاده از JSON با Google Data API، صفحه نمونه‌ها را ببینید.

منابع اضافی

چندین منبع خارجی وجود دارد که ممکن است بخواهید آنها را بررسی کنید تا درباره JSON و استفاده از JSON در برنامه های وب بیشتر بدانید.

بازگشت به بالا