我从PHP页面获取的数据如下:
[{
"id": "1",
"name": null,
"startdate": "2012-07-20",
"starttime": "09:53:02",
"enddate": "2012-07-20",
"endtime": "09:54:10",
"duration": "01:00:00",
"feedbacks": [{
"id": "1",
"type": "1",
"content": "cont"
}],
"conditions": [{
"id": "1",
"dev_id": "1",
"mod_id": "2",
"sub_id": "3",
"to_be_compared_value": "1",
"comparison_type": "1"
}],
"actions": [{
"id": "1",
"dev_id": "1",
"mod_id": "1",
"sub_id": "1",
"target_action": "1"
}]
}]
穿越这个物体哪种方式简单,高效,优雅?直到这个时候我才使用这两个。你能告诉我哪一个必须是我的选择,或者你可以给我一个替代方案吗?为什么?我有我的应用程序的运行版本,我现在正在审查自己的代码,我想从你们所有人那里得到一些建议。
提前致谢,
我之前使用的方法:
$.map
for(var i in obj)
还有一个,我将根据这些数据创建一个表格。
答案 0 :(得分:1)
我更喜欢使用http://underscorejs.org/来做这样的事情。它为对象,集合等提供了许多有用的功能。
答案 1 :(得分:1)
如果我想更改数据,我会使用jQuery's each()(或map())
我应该补充一点,你还应该创建一个返回一个对象的函数(甚至可能使用一些实用工具方法),因为你的数据现在对JS不是很友好。那些日期和时间,这些ID是字符串。
示例:
function cleanMyObject(object){
var cleanFeedbacks = function(feedbacks){
/* ... */
return feedback;
};
object.start = /* transform date and time strings to datetime object ...*/
object.end = /*...*/
/*...*/
$.map(object.feedbacks,cleanFeedbacks);
/* cleanup the remaining objects... */
return object;
}
$.map(receivedData, cleanMyObject);
// cleanMyObject() returns the modified object so $.map will clean everything in your array.
答案 2 :(得分:0)
如果您收到的数据没有变化,只需解析对象并使用您需要的密钥即可。 我所知道的所有浏览器都有一个名为JSON.parse的函数,用于将JSON字符串转换为JS对象。 我想说的是:不要懒惰,如果你的对象总是提供相同的数据,你就没有从编写“通用”函数中获得任何好处,并且几乎没有机会你可以使用它再次使用不同的对象。
var myobj= JSON.parse(phpJSONstring);
var feedbacks= myobj["feedbacks"];
//do something with feedbacks
var conditions= myobj["conditions"];
//do something with conditions
等
答案 3 :(得分:-1)
您可以在javascript对象中转换json字符串,然后像这样访问对象:
var obj = jQuery.parseJSON(jsonString);
alert('Id='+obj.id);
var feedbackList = obj.feedbacks;
for (var i=0; i<feedbackList.length; i++) {
...
}
对jQuery.parseJSON的引用:http://api.jquery.com/jQuery.parseJSON/