试图从嵌套的json访问键和值 - javascript

时间:2016-05-26 16:46:25

标签: javascript json

我有一个嵌套的json,看起来像这样:

{'services': 
    {
        'serviceA': 'OptionA',
        'serviceB': 'OptionB',
        'serviceC': null
    },
'AttributeB': 'ValueB',
'AttributeC': 'ValueC'
}

我想以表格格式呈现嵌套的json(服务),如下所示:

服务选项 serviceA OptionA serviceB OptionB serviceC

我正在尝试这样的事情:

var myJSONObject =  {'services': 
        {
            'serviceA': 'OptionA',
            'serviceB': 'OptionB',
            'serviceC': null
        },
    'AttributeB': 'ValueB',
    'AttributeC': 'ValueC'
    };

for(var i = 0; i < myJSONObject.services.length; i++)
{
    var product = myJSONObject.services[i];
    alert(product.key);
    alert(product.value);
}

这似乎没有帮助。我猜我正在以错误的方式检索对象。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

services是一个对象,您需要迭代其属性。为此,您可以尝试以下

var myJSONObject =  {'services': 
        {
            'serviceA': 'OptionA',
            'serviceB': 'OptionB',
            'serviceC': null
        },
    'AttributeB': 'ValueB',
    'AttributeC': 'ValueC'
    };

for(var key in myJSONObject.services)
{
    alert(key);
    alert(myJSONObject.services[key]);
}

答案 1 :(得分:0)

@nikhil的答案有效,但您可能希望使用hasOwnProperty检查属性也是安全的。

let services = myJSONObject.services
for(let key in services)
{
   if(services.hasOwnProperty(key)) {
     console.log(key);
     console.log(services[key]);
   }
}

答案 2 :(得分:0)

使用Object.keysArray.forEach函数的简短解决方案:

var services = myJSONObject['services'];
Object.keys(services).forEach((key) => console.log(key + ' : '+ (services[key] || "")));

输出:

serviceA : OptionA
serviceB : OptionB
serviceC :