Ruby on rails 如何在ruby中打印数组中的对象元素
我必须在shell中打印我的错误描述,而且我无法访问数组中对象中的元素,我还在学习Ruby 我试过了Ruby on rails 如何在ruby中打印数组中的对象元素,ruby-on-rails,json,ruby,puts,Ruby On Rails,Json,Ruby,Puts,我必须在shell中打印我的错误描述,而且我无法访问数组中对象中的元素,我还在学习Ruby 我试过了 rescue => e puts e.fields[description] ... 而且不起作用 { "code": "123", "message": "Invalid data.", "fields": [ { "name": "test", "description": "testing" } ] } --->我只想打
rescue => e
puts e.fields[description]
...
而且不起作用
{
"code": "123",
"message": "Invalid data.",
"fields": [
{
"name": "test",
"description": "testing"
}
]
}
--->我只想打印测试
多谢各位
谢谢你的帮助:)怎么样
h={:code=>“123”,:message=>“无效数据”,:fields=>[{:name=>“test”,:description=>“testing”}]}
然后
h.dig(:fields,0,:description)
怎么样
h={:code=>“123”,:message=>“无效数据”,:fields=>[{:name=>“test”,:description=>“testing”}]}
然后
h.dig(:fields,0,:description)
您可以执行此操作-e[:fields][0][:description]您可以执行此操作-e[:fields][0][:description]在响应字段中,键包含数组对象
如果要打印特定值,则需要使用如下索引e[“fileds”][0]
,然后将打印“testing”
如果要打印所有描述,则应执行以下操作:
e["fileds"].each do |field|
puts field["description"]
end
在响应字段中,键包含一个数组对象 如果要打印特定值,则需要使用如下索引
e[“fileds”][0]
,然后将打印“testing”
如果要打印所有描述,则应执行以下操作:
e["fileds"].each do |field|
puts field["description"]
end
如果
e
是一个Hash
,可以从显示e
内容的方式推断,
你可以写
e["fields"][0]["description"]
在Rails中,通常有很多方法可以实现同样的效果,有时甚至没有
您也可以编写e[:fields][0][:description]
,但前提是Hash
具有不同的访问权限,这意味着您可以互换使用字符串和符号(默认情况下,如果您自己创建Hash,而不是这种情况)
因此,为了更详细地解释这一行:e[“fields”]
返回一个数组(散列),取第一个元素:e[“fields”][0]
或e[“fields”]。首先
,然后获取散列中键描述的值
但是,如果您创建了一个继承自StandardError
的类,这通常是在出错时抛出的,那么您很可能需要编写如下代码:
e.fields
它返回字段数组。为了找到第一个元素,我们再次编写e.fields[0]
或e.fields.first
,然后它取决于数组是否包含散列,或者是否包含具有方法描述的对象,因此它可以是
e.fields[0].description
或
(我更喜欢编写符号键,但请记住,如果您的散列包含字符串作为键,并且不是无差异访问的散列,则必须使用字符串“description”
)如果e
是散列,可以从显示e
内容的方式推断,
你可以写
e["fields"][0]["description"]
在Rails中,通常有很多方法可以实现同样的效果,有时甚至没有
您也可以编写e[:fields][0][:description]
,但前提是Hash
具有不同的访问权限,这意味着您可以互换使用字符串和符号(默认情况下,如果您自己创建Hash,而不是这种情况)
因此,为了更详细地解释这一行:e[“fields”]
返回一个数组(散列),取第一个元素:e[“fields”][0]
或e[“fields”]。首先
,然后获取散列中键描述的值
但是,如果您创建了一个继承自StandardError
的类,这通常是在出错时抛出的,那么您很可能需要编写如下代码:
e.fields
它返回字段数组。为了找到第一个元素,我们再次编写e.fields[0]
或e.fields.first
,然后它取决于数组是否包含散列,或者是否包含具有方法描述的对象,因此它可以是
e.fields[0].description
或
(我更喜欢编写符号键,但请记住,如果您的散列包含字符串作为键,并且不是无差异访问的散列
,则必须使用字符串“description”
)如果您想要逗号分隔的描述
descriptions = e["fields"].map{|f| f["description"]}.join(',')
puts descriptions
如果需要逗号分隔的描述
descriptions = e["fields"].map{|f| f["description"]}.join(',')
puts descriptions
尝试以下操作:e[:fields]。首先[:description]
显示的e
就像是一个散列,是这样吗?或者是code
、消息
和字段
方法的e
?(因为这似乎更适合于一个错误对象——但很可能是这样。试试这个:e[:fields]。首先[:description]
你显示e
就像它是一个散列,是这样吗?还是code
,消息
和字段
的e
方法?(因为这似乎更适合于一个错误对象——但很可能是这样。