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

尝试从嵌套的json-javascript访问键和值,javascript,json,Javascript,Json,我有一个嵌套的json,如下所示: {'services': { 'serviceA': 'OptionA', 'serviceB': 'OptionB', 'serviceC': null }, 'AttributeB': 'ValueB', 'AttributeC': 'ValueC' } 我希望以如下表格格式呈现嵌套json(服务): {'services': { 'serviceA': 'Opt

我有一个嵌套的json,如下所示:

{'services': 
    {
        'serviceA': 'OptionA',
        'serviceB': 'OptionB',
        'serviceC': null
    },
'AttributeB': 'ValueB',
'AttributeC': 'ValueC'
}
我希望以如下表格格式呈现嵌套json(服务):

{'services': 
    {
        'serviceA': 'OptionA',
        'serviceB': 'OptionB',
        'serviceC': null
    },
'AttributeB': 'ValueB',
'AttributeC': 'ValueC'
}
服务选项 选择服务 服务选项 军种

我试着这样做:

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);
}
var myJSONObject={'services':
{
“服务A”:“选项A”,
“服务B”:“选项B”,
“serviceC”:null
},
“属性B”:“值B”,
“AttributeC”:“ValueC”
};
对于(var i=0;i

这似乎没有帮助。我猜我检索对象的方式不正确。有人能帮忙吗?

服务是一个对象,您需要迭代它的属性。为此,您可以尝试以下操作

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

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

@nikhil的答案是可行的,但为了安全起见,您可能希望使用
hasOwnProperty
检查属性

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

@nikhil的答案是可行的,但为了安全起见,您可能希望使用
hasOwnProperty
检查属性

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

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

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

serviceA : OptionA
serviceB : OptionB
serviceC : 

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

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

serviceA : OptionA
serviceB : OptionB
serviceC : 

键入product.key时可能存在的重复项,您是否确实键入了product.AttributeB?另外,使用console.log()查看正在打印的内容的值。您在对象上迭代,但使用数组语法。使用
for in
循环在对象上迭代,而不是使用
for
循环。键入product.key时可能会重复,您是否实际键入product.AttributeB?另外,使用console.log()查看正在打印的内容的值。您在对象上迭代,但使用数组语法。使用
for in
循环来迭代对象,而不是
for
循环。完美!这100%奏效。我对嵌套JSON和属性有点陌生!再次感谢你@nikhil@chrisrhyno2003-很高兴帮助您实现完美!这100%奏效。我对嵌套JSON和属性有点陌生!再次感谢你@nikhil@chrisrhyno2003-很高兴帮助你