javascript - 遍历嵌套的 json 对象数组

标签 javascript json

我必须遍历 json 数组对象。

它有以下结构。

var myJSONObject = {
    "abc": {
        "prod_1": [
            {"prod_ver" : "prod 1 ver 1"},
            {"prod_ver" : "prod 1 ver 2"},
        ],
        "prod_2": [
            {"prod_ver" : "prod 2 ver 1"},
            {"prod_ver" : "prod 2 ver 2"},
        ],
        "prod_3": [
            {"prod_ver" : "prod 3 ver 1"},
            {"prod_ver" : "prod 3 ver 2"},
        ]
    }
};

基本上我所做的是 prod_1 是产品的名称,并且 prod_1 的版本列表填充在其中。

所以现在我想要的是产品名称及其版本。

问题是该产品下可能有很多产品和很多版本。 所以我需要一个合适的 javascript 循环结构,它可以通用来处理它。

如果循环将产品名称存储在一个变量中,而它的版本存储在另一个变量中,那将是最好的,因为我需要对产品名称进行一些检查。

如果 json 结构错误或可以编写更好的 json 结构,请提出正确/更好的结构。

帮助

提前致谢。

最佳答案

由于 myJSONObject.abc 包含产品列表,因此将属性 abc 定义为数组更有意义。像这样:

var myJSONObject = 
{
"abc":
    [
        [
            {"prod_ver" : "prod 1 ver 1"},
            {"prod_ver" : "prod 1 ver 2"},
        ],
        [
            {"prod_ver" : "prod 2 ver 1"},
            {"prod_ver" : "prod 2 ver 2"},
        ],
        [
            {"prod_ver" : "prod 3 ver 1"},
            {"prod_ver" : "prod 3 ver 2"},
        ]
    ]
};

然后您可以使用普通循环遍历产品及其版本:

for(var i = 0; i < myJSONObject.abc.length; i++)
{
    var product = myJSONObject.abc[i];
    for(var j = 0; j < product.length; j++)
    {
        var version = product[j];
    }
}

您可以更进一步,稍微更改 JSON 对象的结构,使其更易于理解。

var catalog = 
{
    "products": [
        {
            "name": "prod 1",
            "versions": [
                "ver 1",
                "ver 2"
            ]
        },
        {
            "name": "prod 2",
            "versions": [
                "ver 1",
                "ver 2"
            ]
        }
    ]
};

for(var i = 0; i < catalog.products.length; i++)
{
    var product = catalog.products[i];
    var productName = product.name;
    for(var j = 0; j < product.versions.length; j++)
    {
        var version = product.versions[j];
    }
}

关于javascript - 遍历嵌套的 json 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15268594/

相关文章:

javascript - GridView 内的自动完成

javascript - 如何在 JavaScript 中从插入符位置获取最后一个单词?

javascript - 如何将 Twitter typeahead.js 与 Microsoft OData API 结合使用?

用于解析的java原生JSON api

javascript - 如何在鼠标滚轮上进行水平滚动?

javascript - Cors 问题仅在 "put"时发生?

json - 如何仅使用 jq 将嵌套的 JSON 转换为 CSV

android - 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

php - JSON数据集结构

javascript - 操纵外部 Promise 结构的值?