2013-03-06 36 views
-1

我有一个2 obejct轨道转换object1到对象2

name.to_json(object1):

[{"name":{"first":"1","second":"2"}},{"name":{"first":"11","second":"22"}}] 

和object.to_json(对象2):

[{"first":"1","second":"2"},{"first":"11","second":"22"}] 

如何CONVER object1 to object2

rails 2 

ruby 1.8.7 

也许我可以使用地图,但我不知道如何去做。

+1

这些都不是有效的Ruby对象。 – sawa 2013-03-06 11:18:05

+0

我建议使用RABL gem,如果你正在使用JSON。看看它。 https://github.com/nesquena/rabl – scaryguy 2013-03-06 12:14:34

回答

0

“转换”的意思是转换结构?我假设你的object1是一个哈希数组(这是它的“看起来像”,但你只给出了JSON表示,所以我不能确定)。

什么:

object1.map {|o| o["name"]} 

英文:循环中的“object1”的所有对象,并返回什么背后的“姓名”键的值。

完整的示例(从IRB会话复制/粘贴):

irb(main):003:0> object1 = [{"name"=>{"first"=>"1", "second"=>"2"}}, {"name"=>{"first"=>"11", "second"=> "22"}}] 
irb(main):004:0> object1.map {|o|o["name"]} 
=> [{"first"=>"1", "second"=>"2"}, {"first"=>"11", "second"=>"22"}] 

这是你在找什么?

+0

是的,我想转换结构,但你解决方案没有工作,我看到[null,null]当运行object1.map {| o | o [“name”]}。to_json – Nar 2013-03-06 11:17:28

+0

刚刚在irb中尝试过它:irb(main):003:0> object1 = [{“name”=> {“first”=>“1”,“second”=>“ 2“}},{”nam> => [{“name”=> {“first”=>“1”,“second”=>“2”}},{“name”=> {“first” =>“11”,“second”=> “22”}}] irb(main):004:0> object1.map {| o | o [“name”]} => [{“first” =>“1”,“second”=>“2”},{“first”=>“11”,“second”=>“22”}] – Martin 2013-03-06 12:07:44

+0

object1&2的类型是什么?他们的JSON表示,我想这些是哈希阵列,但我不确定,你能否确定它?我的答案适用于这种情况。 – Martin 2013-03-06 12:09:29

0

不知道,如果你想要这个

[1] pry(main)> require "json" 
=> true 
[2] pry(main)> JSON.parse('[{"name":{"first":"1","second":"2"}},{"name":{"first":"11","second":"22"}}]') 
=> [{"name"=>{"first"=>"1", "second"=>"2"}}, 
{"name"=>{"first"=>"11", "second"=>"22"}}] 
[3] pry(main)> x.collect {|w| w.values} 
=> [[{"first"=>"1", "second"=>"2"}], [{"first"=>"11", "second"=>"22"}]]