web-dev-qa-db-fra.com

Convertir la chaîne JSON en tableau JSON en 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 un contenu d'attributs et un temps créé.

Je voudrais convertir 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 atteindre cet objectif?

29
rogerstone

Vous pouvez utiliser la bibliothèque 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
59
Jeremy B.

ActiveSupport::JSON.decode(string) va décoder cela pour vous en un délicieux objet consommable côté serveur.

36
Mario

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

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

Sinon:

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

dans le fichier html.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
Taimoor Changaiz