web-dev-qa-db-fra.com

Vérifier si une clé existe dans un objet json

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

Ce qui précède est l'objet JSON que je traite. Je veux vérifier si la clé 'merchant_id' existe. J'ai essayé le code ci-dessous, mais cela ne fonctionne pas. Un moyen d'y parvenir?

<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>
287
Ajeesh

Essaye ça,

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

}

l'objet JS thisSession devrait être comme

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

vous pouvez trouver les détails ici

517
Anand Jha

Il y a plusieurs façons de le faire, en fonction de votre intention.

thisSession.hasOwnProperty('merchant_id'); vous dira si thisSession a cette clé elle-même (c'est-à-dire pas quelque chose dont elle hérite ailleurs)

"merchant_id" in thisSession vous dira si thisSession a la clé, peu importe où elle l'a eue.

thisSession["merchant_id"] renverra false si la clé n'existe pas ou si sa valeur est évaluée à false pour quelque raison que ce soit (par exemple, s'il s'agit d'un littéral false ou de l'entier 0, etc.).

66
Paul

(Je voulais le signaler même si je suis en retard à la fête)
À la question initiale, vous cherchiez essentiellement à trouver un "Not IN". Il semble que la recherche (2 liens ci-dessous) que je faisais ne m'appuie pas.

Donc, si vous vouliez faire un 'Not In':

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

Je recommanderais simplement de définir cette expression == à ce que vous recherchez

if (("merchant_id" in thisSession)==false)
{
    // do nothing.
}
else 
{
    alert("yeah");
}

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

16
Sam

La vérification de type fonctionne également:

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

Je modifie légèrement votre déclaration if et fonctionne (également pour obj hérité - regardez l'extrait)

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");
}
2
Kamil Kiełczewski

fonction pour vérifier les objets non définis et nuls

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

voici un moyen facile de vérifier si l'objet envoyé est contenir undefined ou 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");
)
0
sai sanath