繁体   English   中英

JSON 结果 JavaScript 点表示法查询返回未定义

[英]JSON Results JavaScript dot notation query returns undefined

我在 JavaScript 方面不是最棒的,但我正在学习。 我有一个无线传感器和一个正在练习的智能插头。 由于某种原因,我无法访问属性 relay_state。 我试过点和括号,但都返回未定义。 我希望它像 function 一样,如下所示,但我不确定我做错了什么。基本上我只想让代码从返回的解析数据中检索 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);         

你所拥有的是一个 object 并访问它你只需要一点.. :)

var acState = JSON.parse(returnValue).result.responseData;
console.log(acState.system.get_sysinfo.relay_state);

从初始 JSON.parse 返回的响应没有从中创建 Object。 所以我第二次解析它来创建Object。 现在它返回 0,即 State。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM