2013-03-06 56 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"}]]