在Ruby中,如何使用JSON中的键的值作为Ruby哈希的键,该哈希的值由两个串联的值组成?

在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

我从以下形式的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":"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的值}。。。我想我明白你的想法了,我正在研究一些想法。我建议你编辑你的问题,将你的评论内容纳入其中。一般来说,问题的澄清应该通过编辑问题而不是在评论中详细阐述来完成,部分原因是并非所有读者都阅读所有评论。