javascript检查JSON键是否存在并显示值

标签 javascript json

我最近一直在修补 Z-Wave,我正在尝试制作一个页面来包含/排除他们的产品。但进展不太顺利。我正在尝试检查 JSON key 是否存在,然后将其显示在页面上。我明白了

TypeError: data.controller is undefined

代码如下:

window.setInterval(function(){
   getData();
}, 2000);

function getData()
{
var milliseconds = (new Date).getTime();
var time = milliseconds.toString().substr(0, milliseconds.toString().length - 3) ;

$.postJSON( "http://192.168.1.102:8083/ZWaveAPI/Data/" + time, function( data ) {
    if(data.controller.lastExcludedDevice.value) alert("EXCLUDED SOMETHING");
    if(data.controller.lastIncludedDevice.value) alert("INCLUDED SOMETHING");
});   
}

$.postJSON = function(url, data, callback, sync) {

// shift arguments if data argument was omited
if ( jQuery.isFunction( data ) ) {
    sync = sync || callback;
    callback = data;
    data = {};
};
$.ajax({
    type: 'POST',
    url: url,
    data: data,
    dataType: 'json',
    success: callback,
    error: callback,
    async: (sync!=true)
});
};

JSON:

{
  "controller.data.controllerState": {
    "value": 0,
    "type": "int",
    "invalidateTime": 1424781697,
    "updateTime": 1425338938
  },
  "controller.data.lastIncludedDevice": {
    "value": 42,
    "type": "int",
    "invalidateTime": 1424781697,
    "updateTime": 1425338938
  },
  ......

非常感谢任何帮助。

最佳答案

如果点是 key 的一部分,则需要使用 [] 表示法。

例如

if (data['controller.data.controllerState'].value) ...

if (data['controller.data.lastIncludedDevice'].value) ...

关于javascript检查JSON键是否存在并显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821366/

相关文章:

javascript - 数组内的多个嵌套展开运算符(javascript es2015)

javascript - 正则表达式文本替换使用 |和 () 捕获问题

php - 如何像数组对象一样访问 PHP 中的 JSON 元素?

json - Alamofire使用多个Urls验证Json结果

javascript - 区分 mouseup mousedown 和 click

javascript - 达到 maxlength 后如何限制输入的字符?

javascript - 如何创建一个具有 self 意识的原型(prototype)?

java - 使用 Rest-Assured 和 java 从 JSON 响应获取特定数据

json - 如何从 Google Maps API 地理编码结果中过滤掉虚构的位置(例如 "under a rock"、 "hiding")?

ruby-on-rails - 如何为Tire构建自定义的to_indexed_json方法?