Convertir la chaîne JSON en tableau JSON dans rails?

J'ai une chaîne JSON dans rails comme indiqué ci-dessous:

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

Qui sont les objets d'un contenu de classe avec le contenu des attributs et le temps créé.

Je voudraisconvertir cette chaîne JSON en son tableau d'objets JSON respectif afin que je puisse exécuter une boucle et décoder le JSON en ses objets dans rails. Comment puis-je y parvenir?

26
demandé sur Deepak Mahakale 2011-06-09 00:18:55

3 réponses

Vous pouvez utiliser la librairie json json

Vous pouvez alors faire:

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

En réponse à votre commentaire, vous pouvez le faire, tant que votre JSON correspond à votre modèle

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
51
répondu Jeremy B. 2013-02-22 16:31:22

ActiveSupport::JSON.decode(string) va décoder que pour vous dans un délicieux Objet consommable sur le côté serveur.

36
répondu Mario 2011-06-08 20:26:06

Si le code JavaScript est interne, vous pouvez le faire:

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

Sinon:

Créez une zone de texte cachée et définissez @ hives.html_safe, car sa valeur maintenant vous pouvez l'obtenir en JavaScript comme valeur de l'élément comme indiqué ci-dessous:

En html.fichier erb

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

Dans le fichier js

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

Pour exécuter la boucle

for(key in hives) {
  alert( hives[key] );
}
0
répondu Taimoor Changaiz 2015-12-29 12:54:35