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?
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
ActiveSupport::JSON.decode(string)
va décoder cela pour vous en un délicieux objet consommable côté serveur.
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] );
}