检查 JSON 是否有密钥的正确方法是什么?
What's the proper way to check if JSON has a key?
我正在使用 Rails 4.2.3。我有这段代码应该解析 JSON
my_object_id = my_object.key?("id") ? my_object['id'] : nil
但是当“my_object”JSON是‘[“name”, “Info”]’时,我得到以下错误
undefined method `key?' for ["name", "Info"]:Array
检查我的 JSON 是否有“id”密钥的正确方法是什么?
您可以使用has_key方法。
my_object_id = my_object.has_key?("id") ? my_object['id'] : nil
附带说明,您始终可以通过 运行 object.methods 在控制台中检查任何对象的可用方法列表。
正如@Pramod 所指出的,您似乎混淆了哈希和数组。
您可以这样做,这意味着它只会在 my_object
的类型正确时尝试检索 id
:
my_object_id = (my_object.is_a?(Hash) && my_object.key?("id")) ? my_object['id'] : nil
但是,这种对条件的需求可能表明您设计中其他地方的弱点,因为您无法确定 my_object
的类型。
我正在使用 Rails 4.2.3。我有这段代码应该解析 JSON
my_object_id = my_object.key?("id") ? my_object['id'] : nil
但是当“my_object”JSON是‘[“name”, “Info”]’时,我得到以下错误
undefined method `key?' for ["name", "Info"]:Array
检查我的 JSON 是否有“id”密钥的正确方法是什么?
您可以使用has_key方法。
my_object_id = my_object.has_key?("id") ? my_object['id'] : nil
附带说明,您始终可以通过 运行 object.methods 在控制台中检查任何对象的可用方法列表。
正如@Pramod 所指出的,您似乎混淆了哈希和数组。
您可以这样做,这意味着它只会在 my_object
的类型正确时尝试检索 id
:
my_object_id = (my_object.is_a?(Hash) && my_object.key?("id")) ? my_object['id'] : nil
但是,这种对条件的需求可能表明您设计中其他地方的弱点,因为您无法确定 my_object
的类型。