jQuery 循环 JSON 结果,对象作为值

jQuery Loop JSON Result with Object as Value

本文关键字:对象 循环 JSON 结果 jQuery      更新时间:2023-09-26

我有这种格式的 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建议的那样制作结构。任何人请帮助我。

如果您自己创建 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);