0

RailsAPIからこのように返される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 に答える