449 Stimmen

Überprüfen, ob ein Schlüssel in einem JSON-Objekt vorhanden ist

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

Das obige ist das JSON-Objekt, mit dem ich arbeite. Ich möchte überprüfen, ob der merchant_id-Schlüssel vorhanden ist. Ich habe den folgenden Code versucht, aber es funktioniert nicht. Gibt es einen Weg, um es zu erreichen?

window.onload = function getApp()
{
  var thisSession = JSON.parse('<?php echo json_encode($_POST); ?>');
  //console.log(thisSession);
  if (!("merchant_id" in thisSession)==0)
  {
    // nichts tun.
  }
  else 
  {
    alert("yeah");
  }
}

769voto

Anand Jha Punkte 10414

Versuchen Sie dies

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

}

Das JS-Objekt thisSession sollte wie folgt aussehen

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

Sie können die Details hier finden

106voto

Paul Punkte 34419

Es gibt mehrere Möglichkeiten, dies zu tun, je nach Ihrem Vorhaben.

thisSession.hasOwnProperty('merchant_id'); wird Ihnen sagen, ob thisSession diesen Schlüssel selbst hat (d. h. nicht etwas, das es von anderer Stelle erbt).

"merchant_id" in thisSession wird Ihnen sagen, ob thisSession den Schlüssel überhaupt hat, unabhängig davon, woher es stammt.

thisSession["merchant_id"] wird false zurückgeben, wenn der Schlüssel nicht existiert oder wenn sein Wert aus irgendeinem Grund zu false ausgewertet wird (z. B. wenn es ein wörtliches false oder die Zahl 0 ist usw.).

42voto

Sam Punkte 1090

(Ich wollte das nur erwähnen, obwohl ich spät dran bin)
Die ursprüngliche Frage, nach der Sie im Grunde ein 'Not IN' gesucht haben. Es scheint, dass es nicht von der Recherche unterstützt wird (2 Links unten), die ich gemacht habe.

Also, wenn Sie ein 'Not In' machen wollten:

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

Ich würde empfehlen den ! Operator zu verwenden

    if (!("merchant_id" in thisSession))
    {
        // nichts tun.
    }
    else 
    {
        alert("yeah");
    }

https://linuxhint.com/use-not-in-operator-javascript/

36voto

code2heaven Punkte 469

Du kannst es so machen:

if("merchant_id" in thisSession){ /** gibt true zurück, wenn es existiert */
 console.log('Existiert!');
}

oder

if(thisSession["merchant_id"]){ /** gibt den Wert zurück, wenn es existiert */
 console.log('Existiert!');
}

26voto

Kailas Punkte 6908

Der Typencheck funktioniert auch:

if(typeof Obj.property == "undefined"){
    // Weise hier den Wert der Eigenschaft zu
    Obj.property = someValue;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X