Check if a key exists inside a JSON object

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

The above is the JSON object I'm dealing with. I want to check if the merchant_id key exists. I tried the below code, but it's not working. Any way to achieve it?

<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>
9 Answers

(I wanted to point this out even though I'm late to the party)
The original question you were trying to find a 'Not IN' essentially. It looks like is not supported from the research (2 links below) that I was doing.

So if you wanted to do a 'Not In':

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

I'd recommend just setting that expression == to what you're looking for

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

you can do like this:

if("merchant_id" in thisSession){ /** will return true if exist */
 console.log('Exist!');
}

or

if(thisSession["merchant_id"]){ /** will return its value if exist */
 console.log('Exist!');
}

This code causes esLint issue: no-prototype-builtins

foo.hasOwnProperty("bar") 

The suggest way here is:

Object.prototype.hasOwnProperty.call(foo, "bar");

I change your if statement slightly and works (also for inherited obj - look on snippet)

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

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

var sessionB = {
  amt: "10.00",
  email: "sam@gmail.com",
  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");

Related