我是初学者,当我开始增加JSON的复杂性时,我开始通过访问它来迷惑自己。如何访问以下JSON?我想访问服务的价值和关键
{
employers:{
Mike: {
old: 20,
services:{
cut : {
value : 10
}
hair_straightening : {
value: 20
}
}
}
Penny: {
old: 20,
services:{
cut : {
value : 10
}
hair_straightening : {
value: 20
}
}
}
}
}
答案 0 :(得分:2)
每个人都必须从某个地方开始:)
我不确定我是否完全明白你所追求的是什么,但是这里......
首先,在列出您的密钥时,您的对象上的符号会略显偏离。例如,在Mike和Penny之间,您应该用逗号分隔较大雇主对象中的每个键。
类似的东西:
employers: {
Mike: {
...
}, //need a comma here
Penny: {
...
}
}
此外,在每个雇主中,剪辑和发型之间应该有一个逗号。
services: {
cut: {
value: 10
}, //need a comma here
hair_straightening: {
value: 20
}
}
现在问你的实际问题...... 要获取每个服务的密钥,可以使用Object.keys()。这个功能可以让你获得给定雇主的钥匙。然后你也可以从同一个函数里面获取值。 (注意这只适用于一个雇主;你只想迭代两者并在每个雇主身上使用相同的功能)
function getServices(employer) {
var services = employer.services;
var servicesKeys = Object.keys(services);
var serviceValueMatrix = [];
servicesKeys.forEach(function(service) {
serviceValueMatrix.push([service, employer.services[service].value])
})
return serviceValueMatrix;
}
// assuming you had var yourJSON = { employers: {...} }
// getServices(yourJSON.employers.Mike);
// returns [["cut",10], ["hair_straightening",20]]
另外,假设您的JSON对象已经是key:value格式,您可能会以value:10,value:20等格式跳过最后一组对象,而只是创建对象的最后一层类似的东西:
services:{
cut: 10,
hair_straightening: 20
}
然后你可以抓住services.cut和services.hair_straightening。
为了清晰起见,下面的完整代码:
const yourJSON = {
employers: {
Mike: {
old: 20,
services: {
cut: {
value: 10
},
hair_straightening: {
value: 20
}
}
},
Penny: {
old: 20,
services: {
cut: {
value: 10
},
hair_straightening: {
value: 20
}
}
}
}
}
function getServices(employer) {
var services = employer.services;
var servicesKeys = Object.keys(services);
var serviceValueMatrix = [];
servicesKeys.forEach(function(service) {
serviceValueMatrix.push([service, employer.services[service].value])
})
return serviceValueMatrix;
}
console.log(getServices(yourJSON.employers.Mike));
// returns [["cut",10], ["hair_straightening",20]]
答案 1 :(得分:1)
你的json应该是这样的:
{{1}}
答案 2 :(得分:0)
您可以使用Object.keys
将对象的键作为数组获取,然后您可以很好地遍历它。
// in this case json is a variable representing your parsed data
Object.keys(json).map(function(key) {
console.log(json[key])
return json[key].services
})
这将为您提供一系列服务对象。