我想以编程方式在下面的JSON中获取 req1 值。这里也可以更改 RequestTypeItem ,因此它不是固定的。另外,我可以使用 object.subobject
进行导航我能够使用
导航到广告位var b = JSON.parse("{ .... }");
b.request.intent.slots.RequestTypeItem.value
但我可以以编程方式进一步导航。
{"request": {
"locale": "en-US",
"timestamp": "2016-09-25T00:36:14Z",
"type": {
"name": "request",
"slots": {
"RequestTypeItem": {
"name": "RequestTypeItem",
"value": "req1"
}
}
}
}
}
答案 0 :(得分:2)
在您的JSON中,您的请求没有 intent 的属性,它有一个属性 type ,因此您可以访问所需的属性
b.request.type.slots.RequestTypeItem.value
JSFiddle:https://jsfiddle.net/9cexbn54/
编辑:再次阅读您的问题后,也许这就是您想要的:
// loop through all properties on the slots object
for (var i in b.request.type.slots) {
if (b.request.type.slots.hasOwnProperty(i)) { // make sure it is a property belonging directly to slots, and not "inherited" from the prototype chain
if (b.request.type.slots[i].value) { // make sure that the sub-property of slots has a value property
document.getElementById("output").innerHTML = b.request.type.slots[i].value;
break; // break out of the loop after getting a value
}
}
}
这里我循环遍历槽上的所有属性,检查属性确实属于槽,并且它具有value属性。
JSFiddle:https://jsfiddle.net/9cexbn54/1/
答案 1 :(得分:0)
我给了一个链接,其中有些人发现它没用。 以下是req1:
$data=@'
[{"request": {
"locale": "en-US",
"timestamp": "2016-09-25T00:36:14Z",
"type": {
"name": "request",
"slots": {
"RequestTypeItem": {
"name": "RequestTypeItem",
"value": "req1"
}
}
}
}
}]
'@
$json=ConvertFrom-Json $data
$json.request.type.slots.RequestTypeItem.value