关于javascript:检查json对象中是否存在密钥

Check if a key exists inside a json object

1
2
3
4
5
6
amt:"10.00"
email:"[email protected]"
merchant_id:"sam"
mobileNo:"9874563210"
orderID:"123456"
passkey:"1234"

以上是我正在处理的JSON对象。 我想检查'merchant_id'键是否存在。 我尝试了下面的代码,但它不起作用。 有什么方法可以实现吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
window.onload = function getApp()
{
  var thisSession = JSON.parse('<?php echo json_encode($_POST); ?>');
  //console.log(thisSession);
  if (!("merchant_id" in thisSession)==0)
  {
    // do nothing.
  }
  else
  {
    alert("yeah");
  }
}


试试这个,

1
2
3
if(thisSession.hasOwnProperty('merchant_id')){

}

JS对象thisSession应该是这样的

1
2
3
4
5
6
7
8
{
amt:"10.00",
email:"[email protected]",
merchant_id:"sam",
mobileNo:"9874563210",
orderID:"123456",
passkey:"1234"
}

你可以在这里找到详细信息


根据您的意图,有几种方法可以做到这一点。

thisSession.hasOwnProperty('merchant_id');会告诉你thisSession本身是否有该密钥(即它不是从其他地方继承的东西)

"merchant_id" in thisSession会告诉你thisSession是否有密钥,无论它在何处获得。

如果密钥不存在,thisSession["merchant_id"]将返回false,或者由于任何原因其值的计算结果为false(例如,如果它是文字false或整数0,依此类推)。


(即使我迟到了,我想指出这一点)
你试图找到一个'不在'的原始问题。
看起来我从事的研究(下面的2个链接)不支持。

所以,如果你想做一个'不在':

1
2
3
4
("merchant_id" in x)
true
("merchant_id_NotInObject" in x)
false

我推荐
只需将表达式==设置为您正在寻找的内容

1
2
3
4
5
6
7
8
if (("merchant_id" in thisSession)==false)
{
    // do nothing.
}
else
{
    alert("yeah");
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in
http://www.w3schools.com/jsref/jsref_operators.asp


类型检查也有效:

1
2
3
4
if(typeof Obj.property =="undefined"){
    // Assign value to the property here
    Obj.property = someValue;
}

我稍微更改你的if语句并且有效(也适用于继承的obj - 看看代码片段)

1
if(!("merchant_id" in thisSession)) alert("yeah");

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
window.onload = function getApp() {
  var sessionA = {
    amt:"10.00",
    email:"[email protected]",
    merchant_id:"sam",
    mobileNo:"9874563210",
    orderID:"123456",
    passkey:"1234",
  }
 
  var sessionB = {
    amt:"10.00",
    email:"[email protected]",
    mobileNo:"9874563210",
    orderID:"123456",
    passkey:"1234",
  }
 
  var sessionCfromA = Object.create(sessionA); // inheritance
  sessionCfromA.name = 'john';

 
  if(!("merchant_id" in sessionA)) alert("merchant_id not in sessionA");
  if(!("merchant_id" in sessionB)) alert("merchant_id not in sessionB");
  if(!("merchant_id" in sessionCfromA)) alert("merchant_id not in sessionCfromA");
 
  if("merchant_id" in sessionA) alert("merchant_id in sessionA");
  if("merchant_id" in sessionB) alert("merchant_id in sessionB");
  if("merchant_id" in sessionCfromA) alert("merchant_id in sessionCfromA");
}


用于检查undefined和null对象的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function elementCheck(objarray, callback) {
        var list_undefined ="";
        async.forEachOf(objarray, function (item, key, next_key) {
            console.log("item----->", item);
            console.log("key----->", key);
            if (item == undefined || item == '') {
                list_undefined = list_undefined +"" + key +"!! ";
                next_key(null);
            } else {
                next_key(null);
            }
        }, function (next_key) {
            callback(list_undefined);
        })
    }

这是检查发送的对象是否包含undefined或null的简单方法

1
2
3
4
5
6
7
8
9
10
11
var objarray={
"passenger_id":"59b64a2ad328b62e41f9050d",
"started_ride":"1",
"bus_id":"59b8f920e6f7b87b855393ca",
"route_id":"59b1333c36a6c342e132f5d5",
"start_location":"",
"stop_location":""
}
elementCheck(objarray,function(list){
console.log("list");
)


你可以尝试if(typeof object !== 'undefined')