web-dev-qa-db-ja.com

RailsでJSON文字列をJSON配列に変換しますか?

以下に示すように、RailsにJSON文字列があります。

[{"content":"1D","createdTime":"09-06-2011 00:59"},{"content":"2D","createdtime":"09-06-2011 08:00"}]

属性コンテンツと作成時間を持つクラスコンテンツのオブジェクトです。

このJSON文字列をそれぞれのJSONオブジェクト配列に変換するにして、ループを実行し、JSONをRailsのオブジェクトにデコードできるようにします。どうすればこれを達成できますか?

29
rogerstone

Jsonライブラリを使用できます json

その後、次のことができます。

jsonArray = [{"content":"1D","createdTime":"09-06-2011 00:59"},   
              {"content":"2D","createdtime":"09-06-2011 08:00"}]
objArray = JSON.parse(jsonArray)

コメントに応じて、JSONがモデルに適合する限り、これを行うことができます

objArray.each do |object|
  # This is a hash object so now create a new one.
  newMyObject = MyObject.new(object)
  newMyObject.save # You can do validation or any other processing around here.
end
59
Jeremy B.

ActiveSupport::JSON.decode(string)は、それをデコードして、サーバー側のおいしい消耗品オブジェクトに変換します。

36
Mario

JavaScriptコードが内部にある場合、これを行うことができます。

<script>
    var hives = <%[email protected]_safe%>;
</script>

それ以外の場合:

非表示のtextareaを作成し、その値として@ hives.html_safeを設定すると、次のようにJavaScriptで要素の値として取得できます。

html.erbファイル内

<%= text_area_tag :hives_yearly_temp, @hives.html_safe, { style: "display: none;"} %>

jsファイル内

var hives = JSON.parse( $('#hives_yearly_temp').val() );

ループを実行するには

for(key in hives) {
  alert( hives[key] );
}
0