2016-07-06 7 views
0

Ich verwende Rails 4.2.3. Ich habe diesen Code, die angeblich JSONWas ist der richtige Weg, um zu überprüfen, ob JSON einen Schlüssel hat?

my_object_id = my_object.key?("id") ? my_object['id'] : nil 

analysieren Aber wenn die „my_object“ JSON ist ‚[„Name "" Info“]‘, ich habe die unten Fehlermeldung erhalten

undefined method `key?' for ["name", "Info"]:Array 

Was ist die richtige Art und Weise prüfen, ob mein JSON einen "id" Schlüssel haben wird?

+1

'my_object.key? (" Id ")' gibt einen Fehler, weil 'my_object' ein Array ist und' key? 'Eine Methode für Hash ist. Können Sie die JSON-Struktur von my_object posten? – Pramod

Antwort

0

Wie @ Pramod angibt, scheint es sich um verwirrende Hashes mit Arrays zu handeln.

Sie so etwas tun könnte, ist es nur ein id abrufen würde Sinn versuchen, wenn my_object vom richtigen Typ ist:

my_object_id = (my_object.is_a?(Hash) && my_object.key?("id")) ? my_object['id'] : nil

Dies muss jedoch für diese wahrscheinlich bedingt an anderer Stelle eine Schwäche zeigt in Ihr Design, da Sie sich des Typs my_object nicht sicher sein können.

0

Sie können has_key Methode verwenden.

my_object_id = my_object.has_key?("id") ? my_object['id'] : nil 

Auf der Seite beachten, können Sie die Liste der verfügbaren Methoden für jedes Objekt immer überprüfen, indem object.methods in der Konsole ausgeführt wird.

+0

'key?' Ist ein Alias ​​von 'has_key?', Also sollte das keinen Unterschied machen. –

+0

Bekannt. Danke :) Ich denke, dann hängt die tatsächliche Lösung von @ Mikes Json-Objekt ab. –

+0

Der JSON wird in der Frage und auch in der Error-Nachricht, die "NoMethodError (undefinierte Methode' has_key? 'Für ["Name", "Info"]: Array): ". –

Verwandte Themen