以对象作为值的jQuery循环JSON结果

时间:2015-03-10 03:20:30

标签: javascript jquery json

我有这种JSON输出格式,但我无法弄清楚如何检查密钥和值。这是我的JSON输出:

[
    {"msgone":
        {"msgId":"1",
        "custName":"MYCUST"}
    },
    {"msgtwo":
        {"msgId":"2",
        "custName":"MYCUST"}
    },
    {"msgtwo":
        {"msgId":"2",
        "custName":"MYCUST"}
    }
]

你去吧。现在我想要做的是首先我想循环每一个并检查它是否msgone然后做一些事情。如果是msgtwo则执行某些操作。如果我们说当前循环为msgone,那么我想要将所有对象msgIdcustName进行进一步处理。

这是我目前所拥有的代码的一部分:

success: function(msg){
    $('#res').val(msg); //just echo to debug
    var returnedRep = $.parseJSON(msg);
    $.each(returnedRep, function(index, value) {
        if(returnedRep[index] === 'msgone'){
            //give me the values
        }
        if(returnedRep[index] === 'msgtwo'){
            //give me the values
        }
    });
}

感谢您对此的反馈。我是JSON的新手。但是由于它的形式不同,我无法通读它。谢谢。


更新: 这就是我编写输出我的JSON数据的方式:

$globArr [] = array(
    "type" => "msgone",
    "data" => array(
        "msgId" => $details[0], 
        "custName" => $details[1]
    )
);

每次收到消息时,我都会将其存储在$globArr中。我无法弄清楚如何制作像@DemoUser建议的结构。有人请帮助我。

1 个答案:

答案 0 :(得分:0)

如果您自己创建json数据,那么您可以使数据保持一致,例如:

[
    {
        "type": "msgone",
        "data" : [
            {
                "msgId":"1",
                "custName":"MYCUST"
            }
         ]
    },
    {
        "type" : "msgtwo",
        "data" : [
            {
                "msgId":"2",
                "custName":"MYCUST"
            },
            {
                "msgId":"2",
                "custName":"MYCUSTSOME"
            },
        ]
    }
]

您可以将其解析为:

success: function(msg){
    $('#res').val(msg); //just echo to debug
    var returnedRep = $.parseJSON(msg);
    $.each(returnedRep, function(key, val) {
        var type = val.type;
        var dataArr = val.data;
        $.each(dataArr, function(idx, v) {
            alert(v.msgId);
        });
    });
}

PHP中的json结构更新::(这为你提供了我提到的所需格式),

$arr = array();
$arr[] = array(
    "type" => "msgOne",
    "data" => array(
        array("msgId" => 1, "custName" => "Some name")
    )
);
$arr[] = array(
    "type" => "msgTwo",
    "data" => array(
        array("msgId" => 2, "custName" => "Some second name"),
        array("msgId" => 3, "custName" => "Some third name"),
    )
);
echo json_encode($arr);