0

我有一个像这样从我的 rails API 返回的 JSON [{"tipo":"1","dia":"02/10/2012","empresa_id":"17","horas":"0:15","tempo":"900"}, {"tipo":"2","dia":"02/10/2012","empresa_id":"17","horas":"0:12","tempo":"720"}]

但我需要它是这样的

`[empresa_id: 17, [{"tipo":"1","dia":"02/10/2012","horas":"0:15","tempo":"900"}, {"tipo":"2","dia":"02/10/2012","horas":"0:12","tempo":"720"}]]

我需要将结果分组empresa_id...我该怎么做?

4

2 回答 2

3

在模型的视图文件夹中,创建一个名为 modelname.json.erb 的文件。在这里,您可以使用 ruby​​ 代码来编辑您想要的 json 格式。这是一个未经测试的代码示例,它可能看起来像这样:

[
<% i = 0
@modelname.each do |model| %>
    {
        "id": <%= model.id %>,
        "name": "<%= model.name %>"
    }<% if i != (@modelname.size - 1) %>,<% end %>
    <% i += 1 %>
<% end %>
]

在你的控制器中,默认情况下你会有这样的输出:

format.json { render json: @modelname }

将其更改为:

format.json

通过这样做,它将查找您刚刚创建的 json 视图!

于 2012-10-02T19:03:51.967 回答
2

尝试这个:

require 'json'

s = '[{"tipo":"1","dia":"02/10/2012","empresa_id":"17","horas":"0:15","tempo":"900"}, {"tipo":"2","dia":"02/10/2012","empresa_id":"17","horas":"0:12","tempo":"720"}]'
j = JSON.parse(s)
r = j.inject({}) do |f,c|
    key = c.delete('empresa_id')
    (f[key]||=[]) << c
    f
end
p r

导致

{"17"=>[{"tipo"=>"1", "dia"=>"02/10/2012", "horas"=>"0:15", "tempo"=>"900"}, {"tipo"=>"2", "dia"=>"02/10/2012", "horas"=>"0:12", "tempo"=>"720"}]}

在此处查看现场演示

于 2012-10-02T19:00:04.073 回答