Arrays 如何将对象数组映射到所需的散列数组格式,如[{';a';:';1';}、{';b';:';2';}]
如何将对象数组映射为以下所需格式Arrays 如何将对象数组映射到所需的散列数组格式,如[{';a';:';1';}、{';b';:';2';}],arrays,ruby,hash,Arrays,Ruby,Hash,如何将对象数组映射为以下所需格式 courses.map do |c| { 'name' : c.name, 'topic' : c.topic } end 其结果是 [{ :name => 'science', :topic => 'chapter 1'}, { :name => 'math', :topic => 'chapter 2'}] 但我想把它打印成这样 [{ 'name':'science', 'topic':'chapter 1
courses.map do |c|
{
'name' : c.name,
'topic' : c.topic
}
end
其结果是
[{ :name => 'science', :topic => 'chapter 1'}, { :name => 'math', :topic => 'chapter 2'}]
但我想把它打印成这样
[{ 'name':'science', 'topic':'chapter 1'}, { 'name':'math', 'topic':'chapter 2'}]
PS:我试过:
如果要将字符串用作哈希键而不是符号,可以:
courses.map do|c|
{
'name'=>c.name,
'topic'=>c.topic
}
终止
结果:
[{'name'=>'science','topic'=>'chapter 1'}]
首先定义一个结构数组以进行说明
S = Struct.new(:name, :topic) { }
arr = [S.new('science', 'chapter 1'), S.new('math', 'chapter 2')]
比如说,
arr[0].name #=> 'science'
arr[1].topic #=> 'chapter 2'
然后
这与新旧哈希语法无关。无法将输出转换为新语法。它将始终使用旧语法。它可能需要一个JSON字符串。您可以使用
.to_json
使用对结果执行_json
,并将其传递给API端点
[{:name=>'science',:topic=>'chapter 1'},{:name=>'math',:topic=>'chapter 2'}].to_json
=>“[{name\”:“science\”,“topic\”:“chapter 1\”,{“name\”:“math\”,“topic\”:“chapter 2\”)”,
我想要像[{'name':“science',“topic':“chapter 1'”,{'name':“math',“topic':“chapter 2'”=>应该被替换为:@AkashKinwad,这可能是不可能的,因为在Ruby{'a':1},等于{:a=>1}
。那么,为什么您必须使用{'a':1}
格式呢?我必须调用第三方API,它具有固定的URL模式。如果您想要的最终结果是字符串,您可以查看Cary Swoveland的另一个答案,您想生成JSON吗?
'[' +
arr.map { |inst| "{ 'name':'#{inst.name}', 'topic':'#{inst.topic} }" }
.join(', ') +
']'
#=> "[{ 'name':'science', 'topic':'chapter 1 }, { 'name':'math', 'topic':'chapter 2 }]"