2016-07-06 6 views
0

私はRails 4.2.3を使用しています。私は、JSONJSONにキーがあるかどうかを確認する適切な方法は何ですか?

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

しかし、「my_objectを」JSONがある「[「名前 『』情報を」]」解析することになっている、このコードを持って、私は以下のエラーを取得する

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

何ですか私のJSONが "id"キーを持っているかどうかを確認する正しい方法?

+1

'my_object.key?(" id ")'は 'my_object'が配列で、' key? 'がhashのためのメソッドであるため、エラーが発生します。 my_objectのjson構造を投稿できますか? – Pramod

答えて

0

@Pramodが示すように、配列とハッシュを混同しているようです。

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

しかし、この条件可能性が高いため、この必要性は、他の場所での弱さを示しています

あなたはそれが唯一のmy_objectが正しい型である場合idを取得しようとする意味、このような何かを行うことができますあなたのタイプはmy_objectであるとは確信できません。

0

has_keyメソッドを使用できます。サイドノートでは

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

、あなたは常にコンソールにobject.methodsを実行することにより、任意のオブジェクトのために利用可能なメソッドの一覧を確認することができます。

+0

'key?'は 'has_key? 'のエイリアスですので、違いはありません。 –

+0

注目。ありがとう:)私は実際のソリューションは@マイクのjsonオブジェクトに依存すると思います。 –

+0

JSONは質問に、またエラーメッセージ "NoMethodError([" name "、" Info "]:Array):"に対する未定義メソッド 'has_key? 'にも投稿されています。 –

関連する問題