在Ruby中,如何使用JSON中的键的值作为Ruby哈希的键,该哈希的值由两个串联的值组成?
我从以下形式的API获得JSON:在Ruby中,如何使用JSON中的键的值作为Ruby哈希的键,该哈希的值由两个串联的值组成?,ruby,Ruby,我从以下形式的API获得JSON: { "result":[ { "sys_created_on":"2018-10-10", "number":"NUM54321", "short_description":"This is a short description.", "other":"this is other stuff" },{ "sys_created_on":"2018-10-12", "number":"NUM
{
"result":[
{ "sys_created_on":"2018-10-10",
"number":"NUM54321",
"short_description":"This is a short description.",
"other":"this is other stuff"
},{
"sys_created_on":"2018-10-12",
"number":"NUM12345",
"short_description":"This is another short description.",
"other":"more extra stuff"
},{
... and so on for 1000's of lines
在Ruby中,我想做的是创建一个
{"sys_created_on(1)" => "number(1) + " | " + short_description(1)",
"sys_created_on(2)" => "number(2) + " | " + short_description(2)",
"sys_created_on(3)" => "number(3) + " | " + short_description(3)",
etc...
}
具体而言,使用示例数据:
{"2018-10-10" => "NUM54321 | This is a short description.",
"2018-10-12" => "NUM12345 | This is another short description.",
etc...
}
那就是。。。使用来自JSON的键的值作为ruby哈希的键,该哈希的值由来自同一JSON的两个串联值组成
我最终使用以下代码解决了这个问题:
my_list = result.each_with_object({}) do |item, hash|
hash[item['sys_created_on']] = item['number'] + " | " + item['short_description']
end
它以我所需要的方式给了我所需要的
require 'json'
json = '{ "result":[{ "key1":"value1", "key2":"value2", "keyN":"valueN" }] }'
h = JSON.parse(json)
#=> {"result"=>[{"key1"=>"value1", "key2"=>"value2", "keyN"=>"valueN"}]}
arr = h["result"].first.values
#=> ["value1", "value2", "valueN"]
{ arr.shift=>arr.reduce(:+) }
#=> {"value1"=>"value2valueN"}
前两条语句当然可以链接:
arr = JSON.parse(json)["result"].first.values
#=> ["value1", "value2", "valueN"]
以下是我最终得到的结果:
new_old = result.each_with_object({}) do |item, hash|
hash[item['sys_created_on']] = item['number'] + " | " +
item['short_description']
end
这将迭代给定集合,将每个元素和给定对象传递给块。非常适合构建散列 如何确定要连接的值?钥匙应该是value1吗?你能举一个输入和输出清晰的例子吗?最后,你为什么要这样解构散列呢?如果你能提供一个更完整的例子来说明你想要做什么,那将是很有帮助的。例如,示例应该是完整的no…,并且所有输入都应该是有效的Ruby对象。例如,字符串应该在引号中。这使读者能够根据您的示例测试他们的代码,以确认它提供了所需的结果。在给出示例时,请为每个输入指定一个变量,例如str=。。。或h={…},以便读者可以在答案和注释中引用这些变量。始终显示所需的结果,并尽可能简洁地制作示例。因为第一步显然是从JSON字符串创建哈希,所以从该哈希开始,而不提及JSON会更简单。@CarySwoveland谢谢!我更新了它,并在编辑时解决了这个问题。谢谢-这很接近,但我需要能够按名称选择某些键,并从这些特定键创建哈希。如果不清楚的话,我道歉。结果中每个项目大约有50个键:值对。我需要创建一个散列,其中散列键是日期上名为sys_created_的json键的值,并将其映射到根据json键值编号和简短描述创建的散列值。。。{sys_created_on的值=>number的值+short_description的值}。。。我想我明白你的想法了,我正在研究一些想法。我建议你编辑你的问题,将你的评论内容纳入其中。一般来说,问题的澄清应该通过编辑问题而不是在评论中详细阐述来完成,部分原因是并非所有读者都阅读所有评论。