Iterate through nested json object array

前端 未结 4 1792
[愿得一人]
[愿得一人] 2020-12-01 11:32

I have to iterate through json array object.

It has following structure.

var myJSONObject = {
    \"abc\": {
        \"prod_1\": [
            {\"pro         


        
4条回答
  •  温柔的废话
    2020-12-01 11:45

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

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

提交回复
热议问题