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