迭代嵌套的json对象数组 [英] Iterate through nested json object array

查看:533
本文介绍了迭代嵌套的json对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须遍历json数组对象。

I have to iterate through json array object.

它有以下结构。

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的版本列表是填充在里面。

Basically what I am doing is prod_1 is name of a product and the list of versions that prod_1 has are populated inside it.

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

So now what i want is the name of the product as well as what versions it has.

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

The problem is there can be many products and many versions under that product. So i need a proper looping structure in javascript that can be generic to handle it.

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

It would be best if the loop stores product name in one var and it's version in another var as there are some checking i need to on product name.

如果json结构错误或者json结构更好可以写成请建议一个正确/更好的结构。

If the json structure is wrong or a better json structure can be written the please suggest a right/better structure.

帮助

提前致谢。

推荐答案

由于 myJSONObject.abc 包含一个列表对于将属性 abc 定义为数组更有意义的产品。像这样:

Since myJSONObject.abc contains a list of products it would make more sense to define the property abc as an array. Like this:

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"},
        ]
    ]
};

然后你可以使用普通循环迭代产品及其版本:

Then you can iterate over the products and their versions using normal loops:

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对象结构有点让它更容易理解。

You could take it slightly further and alter your JSON object's structure a bit to make it more easily understandable.

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];
    }
}

这篇关于迭代嵌套的json对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆