在我的模型中,我从facebook和twitter的api获得了两个Json数组。
facebook_friends = { "data":
[{"name": "Friend Joe", "id": "123"},
{"name": "Friend Jane", "id": "12342"}]}
twitter_friends = { "users":
[{"name": "Other friend joe", "id": "333"},
{"name": "Other friend Jane", "id": "456"}]}
我想构建一个这样的数组(注意:我正在附加提供程序密钥以识别数据的来源)
all_friends = [
{"name": "Friend Joe", "id": "123", "provider": "facebook"},
{"name": "Friend Jane", "id": "12342", "provider": "facebook"},
{"name": "Other friend joe", "id": "333", "provider": "twitter"},
{"name": "Other friend Jane", "id": "456", "provider": "twitter"}]
我可以用这样的jquery做到这一点 - > http://jsfiddle.net/gm3jJ/但我如何在红宝石中做到这一点?
感谢
答案 0 :(得分:1)
您可以使用以下行来执行此操作:
facebook_array = JSON.parse('{ "data": [{"name": "Friend Joe", "id": "123"}, {"name": "Friend Jane", "id": "12342"}]}')["data"].map{|h| h.merge({'provider' => 'facebook'})}
twitter_array = (JSON.parse('[{"name": "Other friend joe", "id": "333"}, {"name": "Other friend Jane", "id": "456"}]').map{|h| h.merge({'provider' => 'twitter'})})
final_array = facebook_array.concat(twitter_array)
编辑:在执行上述代码之前,请不要忘记要求使用json:require 'json'
答案 1 :(得分:1)
如果你想组合东西,你可以这样做:
# Get the array of friends from each service and add provider
fb = JSON.parse(facebook_friends)["data"].map {|x| x["provider"] = "facebook"}
tw = JSON.parse(twitter_friends)["users"].map {|x| x["provider"] = "twitter"}
# Concatenate them into one array
fb + tw