【发布时间】:2019-05-30 11:51:02
【问题描述】:
我有这个 json
[
%{
"159.69.136.31" => [
%{"2015" => ["4"]},
%{"2016" => []},
%{"2017" => ["9"]},
%{"2018" => []},
%{"2019" => ["05"]}
]
},
%{
"94.130.139.38" => [
%{"2015" => []},
%{"2016" => []},
%{"2017" => []},
%{"2018" => ["5", "8"]},
%{"2019" => []}
]
},
%{
"94.130.217.56" => [
%{"2015" => []},
%{"2016" => []},
%{"2017" => []},
%{"2018" => []},
%{"2019" => []}
]
}
]
我想让它像
[
%{"2015" => ["4"]},
%{"2016" => []},
%{"2017" => ["9"]},
%{"2018" => ["5", "8"]},
%{"2019" => ["05"]}
]
基本上,它合并了同一年的键和地图上可用的数据。我已经用不同的方法尝试过这个解决方案,但它不起作用Elixir: Merge list with same map keys to one map
更新:年份和 IP 不变 更新一点关于此的更多信息..
years = ["2015", "2016", "2017", "2018", "2019"]
servers = [@seaweedfs_new, @seaweedfs_old, @seaweedfs_oldest]
Enum.map(servers, fn server ->
type = seaweefs_type(server)
attribute = seaweedfs_attribute(server)
url = "http://" <> server <> ":8888" <> "/#{camera.exid}/snapshots/recordings/"
year_values =
Enum.map(years, fn year ->
final_url = url <> year <> "/"
%{
"#{year}" => request_from_seaweedfs(final_url, type, attribute)
}
end)
%{
"#{server}" => year_values
}
end)
这就是我获取年份值并将它们添加到服务器对象的方式。如果有可能在获得年份值的同时将其分解?
"#{year}" => request_from_seaweedfs(final_url, type, attribute)这个请求基本返回如"2015" => ["1", "2", "3"],有没有可能在进入服务器之前合并几年?
【问题讨论】:
标签: elixir