Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 遍历JSON对象_Javascript_Json_Optimization - Fatal编程技术网

Javascript 遍历JSON对象

Javascript 遍历JSON对象,javascript,json,optimization,Javascript,Json,Optimization,我从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":

我从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)

还有一个问题,我将根据这些数据创建一个表。

我更喜欢使用这些数据。它有很多用于对象、集合等的有用函数。

您可以在javascript对象中转换json字符串,然后像这样访问对象:

var obj = jQuery.parseJSON(jsonString);
alert('Id='+obj.id);

var feedbackList = obj.feedbacks;
for (var i=0; i<feedbackList.length; i++) {
   ...
}
var obj=jQuery.parseJSON(jsonString);
警报('Id='+obj.Id);
var反馈列表=对象反馈;
对于(var i=0;i我会使用(或者如果我想更改数据)

我应该补充一点,您还应该创建一个函数来返回一个对象(甚至可能使用一些实用方法),因为您的数据现在不是非常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.

如果您接收的数据没有更改,只需解析对象并使用所需的键即可。 我所知道的所有浏览器都有一个函数,用于将JSON字符串转换为JS对象。 我想说的是:不要偷懒,如果你的对象总是提供相同的数据,那么写一个“通用”函数并不会给你带来任何好处,而且你几乎不可能在不同的对象上再次使用这个函数

var myobj= JSON.parse(phpJSONstring);
var feedbacks= myobj["feedbacks"];
//do something with feedbacks
var conditions= myobj["conditions"];
//do something with conditions

etc

无法解析JSON.parse()被使用?是的,在解析它之后,我有一个对象,我可以用哪种方式有效地使用这个对象?取决于你想用什么方式使用它?在它上面循环或在它上面映射一个函数都是在正确的上下文中执行的非常好的操作。但是你到底想用这个数据做什么?有效地使用这个对象意味着什么?当然,我知道我告诉你:我使用这个对象及其所有数据,因此我必须以某种方式遍历所有对象,我只是不确定我可以采用哪种方式是最好的?我在评论中说,我已经在转换这个对象。但感谢你的意见。那里不会只有一个数据记录,会有很多,很多,甚至可能比那更大。jus我不知道有没有更有效的方法好的,我知道使用JSON解析我喜欢!她一直在哪里:)