2012-07-30 100 views
1

我是jQuery的新手,只是爲了好玩。我有一些code,我想嘗試修改我的需求,但目前的js文件從谷歌電子表格獲取其數據,然後將每個項目作爲對象返回。我不使用json將數據從我的服務器傳遞給jQuery,所以我想知道如何將json轉換爲對象。我可以將json輸入轉換爲jQuery中的對象列表嗎?

它這樣做是目前的方式(桌面是從谷歌文檔中獲取數據的JS程序的名稱):我已經添加的警報遍佈文件

Tabletop.init({ 
    key: timelineConfig.key, 
    callback: setupTimeline, 
    wanted: [timelineConfig.sheetName], 
    postProcess: function(el){ 
     //alert(el['photourl']); 
     el['timestamp'] = Date.parse(el['date']); 
     el['display_date'] = el['displaydate']; 
     el['read_more_url'] = el['readmoreurl']; 
     el['photo_url'] = el['photourl']; 
    } 
}); 

,我認爲這是該地區獲取數據並將其傳遞。我正在考慮用我的json中的對象替換其對象中的項目,並查看它是否會改變任何內容,但我不確定。通常,我通過json,hashmaps和列表傳遞單個項目,不確定它如何與對象一起工作或如何訪問對象(我只需調用爲請求創建的url,$("#user-history").load("/cooltimeline/{{ user.id }}");)。但是如果我想將json數據轉換爲對象,我該從哪裏開始呢?

如果有幫助,這裏是我想要做的(但通過使用json數據)的demo

p.s.我真的在尋找如何完成我想要做的事情的邏輯,也許我錯過了一些想法,所以我可以谷歌和學習。

回答

0

使用使用功能JSON.parse(json) :)或jQuery.parseJSON(json)

var json = '{"a":2}'; 
var object = JSON.parse(json); 

alert(object.a); 

您應該看到信息提示:2


我不真的知道我理解你的意見,但也許你想只是這樣做:

postProcess: function(el){ //here el is JSON string 
     el = JSON.parse(el); // now el is an object 
     el.timestamp = Date.parse(el.date); 
     el.display_date = el.displaydate; 
     el.read_more_url = el.readmoreurl; 
     el.photo_url = el.photourl; 

     return el; 

    } 

Btw。你不需要使用就知道屬性名稱不括號不規範名稱:

el['timestamp'] === el.timestamp 

如果您貼上您的JSON

+0

它不是真正的工作會更容易。我試圖做的是爲上述每個變量創建一個警報,然後嘗試使用您的方法來用我自己的數據替換所有變量,以查看我是否可以更改頁面,但它只是不加載(只是空白時間線假設是) – Lostsoul 2012-07-30 23:10:35

+0

如果我理解你''postProcess'函數中的'el'就是JSON?如果if是,那麼你應該使用類似於:'el = JSON.parse(el)'。在哪個瀏覽器中測試該應用程序? – 2012-07-30 23:16:39

+0

我剛試過,沒有運氣。我正在測試鉻。我離開了上面的代碼,但在它上面我添加了'var el ='{「date」:「may 15,2008」}'; \t var el = JSON.parse(el);'並且做了一個警告,看看數據是否通過,而不是。我的目標是manuelly輸入一些數據,所以我明白它是如何工作的,然後我將它連接到我的服務器通過json – Lostsoul 2012-07-30 23:19:20

相關問題