Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在ruby中打印数组中的对象元素_Ruby On Rails_Json_Ruby_Puts - Fatal编程技术网

Ruby on rails 如何在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" } ] } --->我只想打

我必须在shell中打印我的错误描述,而且我无法访问数组中对象中的元素,我还在学习Ruby

我试过了

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
方法?(因为这似乎更适合于一个错误对象——但很可能是这样。