amt: "10.00"
email: "sam@gmail.com"
merchant_id: "sam"
mobileNo: "9874563210"
orderID: "123456"
passkey: "1234"

以上就是我要处理的JSON对象。我想检查merchant_id键是否存在。我尝试了下面的代码,但它不工作。有办法实现吗?

<script>
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");
  }
}
</script>

当前回答

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

thisSession.hasOwnProperty(“merchant_id”);会告诉你这个session本身是否有这个键(即不是它从其他地方继承的东西)

"merchant_id"在thisSession将告诉你这个session是否有密钥,不管它从哪里得到它。

thisSession["merchant_id"]将返回false如果键不存在,或者如果它的值因任何原因计算为false(例如,如果它是一个字面值false或整数0等等)。

其他回答

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

试试这个,

if(thisSession.hasOwnProperty('merchant_id')){

}

JS对象thisSession应该像这样

{
amt: "10.00",
email: "sam@gmail.com",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234"
}

你可以在这里找到细节

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

thisSession.hasOwnProperty(“merchant_id”);会告诉你这个session本身是否有这个键(即不是它从其他地方继承的东西)

"merchant_id"在thisSession将告诉你这个session是否有密钥,不管它从哪里得到它。

thisSession["merchant_id"]将返回false如果键不存在,或者如果它的值因任何原因计算为false(例如,如果它是一个字面值false或整数0等等)。

类型检查也适用:

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

(尽管我迟到了,但我还是想指出这一点) 你最初的问题本质上是想找到一个“Not IN”。 这似乎没有得到我正在做的研究(下面2个链接)的支持。

所以如果你想做一个Not In

("merchant_id" in x)
true
("merchant_id_NotInObject" in x)
false 

我建议 只需将表达式==设置为您要查找的内容

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