Проверьте, существует ли ключ внутри json-объекта

amt: "10.00"
email: "[email protected]"
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>

Ответ 1

Попробуйте это,

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

}

объект JS thisSession должен выглядеть как

{
amt: "10.00",
email: "[email protected]",
merchant_id: "sam",
mobileNo: "9874563210",
orderID: "123456",
passkey: "1234"
}

вы можете найти подробности здесь

Ответ 2

Есть несколько способов сделать это, в зависимости от ваших намерений.

thisSession.hasOwnProperty('merchant_id'); расскажет вам, есть ли у этого сеанса этот ключ сам (т.е. не наследуется от него в другом месте)

"merchant_id" in thisSession расскажет вам, есть ли у этого ключа ключ вообще, независимо от того, где он его получил.

thisSession["merchant_id"] вернет значение false, если ключ не существует, или если его значение равно нулю по какой-либо причине (например, если это буквальный false или целое число 0 и т.д.).

Ответ 3

(Я хотел указать на это, хотя я опоздал на вечеринку)
Первоначальный вопрос, который вы пытались найти "НЕ В" по существу. Похоже, это не подтверждается исследованиями (2 ссылки ниже), которые я проводил.

Итак, если вы хотите сделать "не в":

("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

Ответ 4

Тип проверки также работает:

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

Ответ 5

Как насчет этого?

if (thisSession.merchant_id){
   ...
}

Это намного проще, чем предыдущие решения.

Ответ 6

Я немного изменяю ваше выражение if и работает (также для унаследованного obj - посмотрите на фрагмент)

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

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

Ответ 7

для проверки undefined и нулевых объектов

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

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

Ответ 8

Вы можете попробовать if(typeof object !== 'undefined')