Конвертировать JSON String в JSON Array в рельсах? - PullRequest
29 голосов
/ 09 июня 2011

У меня есть строка JSON в рельсах, как показано ниже:

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

которые являются объектами содержимого класса с атрибутами содержимого и времени создания.

Я хотел бы преобразовать эту строку JSON в соответствующий ей массив объектов JSON , чтобы я мог запустить цикл и декодировать JSON к его объектам в рельсах. Как мне этого добиться?

Ответы [ 3 ]

59 голосов
/ 09 июня 2011

Вы можете использовать библиотеку 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
36 голосов
/ 09 июня 2011

ActiveSupport::JSON.decode(string) расшифрует это для вас в восхитительный предмет потребления на стороне сервера.

0 голосов
/ 29 декабря 2015

Если код JavaScript является внутренним, то вы можете сделать это:

<script>
    var hives = <%=@hives.html_safe%>;
</script>

В противном случае:

создайте скрытое текстовое поле и установите @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] );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...