JSON 结果 JavaScript 点符号查询 returns 未定义
JSON Results JavaScript dot notation query returns undefined
我在 JavaScript 方面不是最出色的,但我正在学习。我有一个无线传感器和一个正在练习的智能插头。由于某种原因,我无法到达 属性 relay_state。我试过 Dot 和 Bracket 但都 return 未定义。我希望它像我下面的函数一样,但我不确定我做错了什么。基本上我只是想让代码从 returned 解析中检索 relay_state 的值数据。感谢反馈!谢谢。
acState = JSON.parse(returnValue).result.responseData;
/*Returned response:
{
"system": {
"get_sysinfo": {
"sw_ver": "1.0.0",
"hw_ver": "1.0",
"type": "IOT.SMARTPLUGSWITCH",
"model": "MODELISHERE",
"mac": "MACIDISHERE",
"dev_name": "SMARTPLUG",
"alias": "PLUG ALIAS",
"relay_state": 0, //NEED THIS RETURNED
"on_time": 0,
"active_mode": "none",
"feature": "TIM",
"updating": 0,
"icon_hash": "",
"rssi": -53,
"led_off": 0,
"longitude_i": -LONGDATA,
"latitude_i": LATDATA,
"hwId": "HWIDISHERE",
"fwId": "00000000000000000000000000000000",
"deviceId": "DEVICEIDISHERE",
"oemId": "OEMIDISHERE",
"next_action": {
"type": -1
},
"err_code": 0
}
}
}
*/
function value(layer, path, value) {
var i = 0,
path = path.split('.');
for (; i < path.length; i++)
if (value != null && i + 1 === path.length)
layer[path[i]] = value;
layer = layer[path[i]];
return layer;
console.Log("Relay State: " + value(acState,'system[get_sysinfo[relay_state]]]'));
};
console.Log("Response Data Parsed: " + acState);
你拥有的是一个对象,要访问它你只需要一个点.. :)
var acState = JSON.parse(returnValue).result.responseData;
console.log(acState.system.get_sysinfo.relay_state);
从初始 JSON.parse 返回的响应没有从中创建对象。所以我第二次解析它来创建对象。现在它 returns 0 是状态。
json1=JSON.parse(returnValue).result.responseData; acState=JSON.parse(json1);
console.Log("Response Data Parsed: " + acState);
console.Log("Type: "+typeof acState)
console.Log("Relay State: " + acState.system.get_sysinfo.relay_state);
我在 JavaScript 方面不是最出色的,但我正在学习。我有一个无线传感器和一个正在练习的智能插头。由于某种原因,我无法到达 属性 relay_state。我试过 Dot 和 Bracket 但都 return 未定义。我希望它像我下面的函数一样,但我不确定我做错了什么。基本上我只是想让代码从 returned 解析中检索 relay_state 的值数据。感谢反馈!谢谢。
acState = JSON.parse(returnValue).result.responseData;
/*Returned response:
{
"system": {
"get_sysinfo": {
"sw_ver": "1.0.0",
"hw_ver": "1.0",
"type": "IOT.SMARTPLUGSWITCH",
"model": "MODELISHERE",
"mac": "MACIDISHERE",
"dev_name": "SMARTPLUG",
"alias": "PLUG ALIAS",
"relay_state": 0, //NEED THIS RETURNED
"on_time": 0,
"active_mode": "none",
"feature": "TIM",
"updating": 0,
"icon_hash": "",
"rssi": -53,
"led_off": 0,
"longitude_i": -LONGDATA,
"latitude_i": LATDATA,
"hwId": "HWIDISHERE",
"fwId": "00000000000000000000000000000000",
"deviceId": "DEVICEIDISHERE",
"oemId": "OEMIDISHERE",
"next_action": {
"type": -1
},
"err_code": 0
}
}
}
*/
function value(layer, path, value) {
var i = 0,
path = path.split('.');
for (; i < path.length; i++)
if (value != null && i + 1 === path.length)
layer[path[i]] = value;
layer = layer[path[i]];
return layer;
console.Log("Relay State: " + value(acState,'system[get_sysinfo[relay_state]]]'));
};
console.Log("Response Data Parsed: " + acState);
你拥有的是一个对象,要访问它你只需要一个点.. :)
var acState = JSON.parse(returnValue).result.responseData;
console.log(acState.system.get_sysinfo.relay_state);
从初始 JSON.parse 返回的响应没有从中创建对象。所以我第二次解析它来创建对象。现在它 returns 0 是状态。
json1=JSON.parse(returnValue).result.responseData; acState=JSON.parse(json1);
console.Log("Response Data Parsed: " + acState);
console.Log("Type: "+typeof acState)
console.Log("Relay State: " + acState.system.get_sysinfo.relay_state);