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