[英]Extracting info from JSON object into Javascript variable
我有一個來自Google日歷的供稿,該供稿將事件作為JSON對象提供
這是其中一個事件的示例
"entry": [{
"id": {
"$t": "https://www.google.com/calendar/feeds/0183mgrcm70ch155q5bq1de9v8%40group.calendar.google.com/public/full/526dopgom77cdg9jmish3se1gk"
},
"published": {
"$t": "2014-09-11T08:17:53.000Z"
},
"updated": {
"$t": "2014-09-11T08:20:57.000Z"
},
"category": [{
"scheme": "http://schemas.google.com/g/2005#kind",
"term": "http://schemas.google.com/g/2005#event"
}],
"title": {
"$t": "The Village",
"type": "text"
},
"content": {
"$t": "",
"type": "text"
},
"link": [{
"rel": "alternate",
"type": "text/html",
"href": "https://www.google.com/calendar/event?eid=NTI2ZG9wZ29tNzdjZGc5am1pc2gzc2UxZ2sgMDE4M21ncmNtNzBjaDE1NXE1YnExZGU5djhAZw",
"title": "alternate"
}, {
"rel": "self",
"type": "application/atom+xml",
"href": "https://www.google.com/calendar/feeds/0183mgrcm70ch155q5bq1de9v8%40group.calendar.google.com/public/full/526dopgom77cdg9jmish3se1gk"
}],
這是到目前為止的我的Javascript
function GCalEvents(gcal_json_url) {
jQuery.getJSON(gcal_json_url, function(data){
// Parse and render each event
jQuery.each(data.feed.entry, function(i, item){
if(i == 0) {
jQuery("#gcal-events li").first().hide();
};
var event_link = item.link.href;
// event title
var event_title = item.title.$t;
// event contents
var event_contents = jQuery.trim(item.content.$t);
// make each separate line a new list item
event_contents = event_contents.replace(/\n/g,"</li><li>");
// event start date/time
var event_start_date = new Date(item.gd$when[0].startTime);
// if event has a start time (as oppose to all day), format date with time
if(event_start_date.getHours() != 0 || event_start_date.getMinutes() != 0) {
var event_start_day = event_start_date.toString("d");
var event_start_month = event_start_date.toString("MMM");
var event_start_time = event_start_date.toString("h:mm tt");
} else {
// otherwise format start as date only (without time)
var event_start_day = event_start_date.toString("d");
var event_start_month = event_start_date.toString("MMM");
};
// event location - if not null, surround with parens
var event_loc = item.gd$where[0].valueString;
// Render the event
jQuery("#gcal-events li").last().before(
"<div id=\"calentry\">"
+ "<ul>"
+ "<a href=\"" + event_link + "\"><li class=\"eldate\"> <span id=\"elmonth\">" + event_start_month + "</span><br><span id=\"elday\">" + event_start_day + "</span><br>" + event_start_time + "</li></a>"
+ "<li><span class=\"elvenue\">" + event_title + "</span><br><span class=\"ellocation\">" + event_loc + "</span></li>"
+ "</ul>"
+ "<div id=\"clearfix\"></div>"
+ "</div>"
);
});
});
}
我已經成功地將信息提取到event_title,event_contents和event_start_date變量中,但是event_link變量不斷出現未定義的狀態(我正在嘗試將URL從“ link:href”獲取到此變量中)
有任何想法嗎?
item.link
是一個數組。 使用此特定的JSON,您可以使用例如item.link[0].href
或item.link[1].href
。
您的“鏈接”變量是一個數組。 因此,您必須執行以下操作才能訪問值:
var event_link = item.link[0].href; // This gives you this first one
更好的辦法是檢查是否有一個:
var event_link = null;
if (item.link.length > 0)
{
var event_link = item.link[0].href;
}
以下代碼對您有所幫助。
var dataObj = jQuery.parseJSON(data);
var event_link = null;
if (dataObj.link.length > 0)
{
var event_link = dataObj .link[0].href;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.