Problème manipulation d'une date avec JSON

Résolu/Fermé
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016 - Modifié par drspinoza le 17/04/2016 à 04:05
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016 - 17 avril 2016 à 04:37
Bonjour,

Pour être plus precis,

Je fais du localStorage avec JSON.
tout va bien sauf pour les dates je m'explique.

Cette fonction sert à ajouter des infos depuis un input
function ajoutInfo()
{   
 var nom=$('input[name="nom"]').val();
 var desc=$('textarea[name="description"]').val();
 var image=$('input[name="image"]').val();
 var date=$('input[name="date"]').val();
 var capacite=$('input[name="capacite"]').val();
 var pelouse=$('#pelouse').val();
 var transport=$('input[name="transport"]').val();
 
 
 lireBdJson();
 var descJsonObjects=bd.descriptions;
 var jsonObject={ 
  "nom":nom,
   "description":desc,
   "date":date,
   "capacite":capacite,
   "pelouse":pelouse,
   "transport":transport,
   "image":image  
 };
 descJsonObjects.push(jsonObject);
 bd.descriptions=descJsonObjects;
 localStorage.setItem('bdjson', JSON.stringify(bd)); 
 return(true);
 
 }



Cette partie sert à réutiliser mon objet JSON pour le mettre en html

function lireBdJson()
{
 bd=localStorage.getItem('bdjson');
 if((bd=="undefined")||(bd==null)){
  initialiserBdJson();
 }else{
  bd=JSON.parse(bd);
 }
 
 var descJsonObjects=bd.descriptions;
 var hr="<hr>";
  $("#contenu:first").append(hr);
   
 for(var i=0;i<descJsonObjects.length;i++){
  var jsonObject=null;
  jsonObject=descJsonObjects[i];
  var div='<div class="ajoutjson">';
      div=div+'<h3 class="nom" id="'+jsonObject.nom+'">'+jsonObject.nom+'</h3>';
      div=div+'<img class="image" src='+jsonObject.image+'>';
      div=div+'<div class="description">'+jsonObject.description+'</div>';
      div=div+'<b>Capacité :</b><span class="capacite">'+jsonObject.capacite+'</span><br/>';
      div=div+'<b>Pelouse :</b><span class="pelouse">'+jsonObject.pelouse+'</span><br/>';
      div=div+'<b>Ouverture prévu le :</b><span class="date">'+jsonObject.date+'</span><br/>';
      div=div+'<b>Transport :</b><span class="transport">'+jsonObject.transport+'</span><br/>';      
    div=div+'</div><br><br>';
    $("#contenu:first").append(div);
 }


Et enfin celle-ci à pour fonction d'enregistrer les transformations que je fait sur un objet

function mettreAJourBdJson()
{
 initialiserBdJson();
 var descJsonObjects=bd.descriptions;
 $('div[class="ajoutjson"]').each(function(){
  var nom=$(this).find('h3[class="nom"]').html();
  var desc=$(this).find('div[class="description"]').html();
  var image=$(this).find('img[class="image"]').attr('src');
  var date=$(this).find('span[class="date"]').html();
  var capacite=$(this).find('span[class="capacite"]').html();
  var pelouse=$(this).find('span[class="pelouse"]').html();
  var transport=$(this).find('span[class="transport"]').html();
  
  
  var jsonObject={ 
   "nom":nom,
   "description":desc,
   "capacite":capacite,
   "pelouse":pelouse,
   "transport":transport,
   "image":image
       };
      descJsonObjects.push(jsonObject);
 });
 bd.descriptions=descJsonObjects;
 localStorage.setItem('bdjson', JSON.stringify(bd));  
}


Bon tout fonctionne sauf pour la date.
Le problème est que lorsque je transforme un objet celui-ci n'enregistre pas la date dans le bon format.
Et je me retrouve avec une Date d'ouverture : undefined.

J'ai tenté de la rendre en String mais cela ne fonctionne toujours pas.

Toute aide est la bienvenue.

Merci,





1 réponse

Salut,

et pourquoi pas l'objet Date() c'est fait pour ça et pas de problème de format puisque les méthodes associées permettent d'en ressortir la forme qu'on en veut.
Il faudra utiliser ses méthodes avant le stockage pour obtenir une valeur de type chaîne(ou un timestamp) et après la récupération du JSON(je connait peu JSON mais je ne voit pas pourquoi on pourrais pas y stocker un objet si on veut quitte à le parser avant et après enregistrement).

Je viens de penser aussi "date"serait pas un mot interdit?(puisque des fonctions s'écrivent avec date).

à vérifier
0
drspinoza Messages postés 51 Date d'inscription dimanche 25 octobre 2015 Statut Membre Dernière intervention 9 mai 2016
Modifié par drspinoza le 17/04/2016 à 04:38
Salut,

J'étais en train de relire mon message et j'ai trouvé le problème qui est vraiment bête.
En fait c'est que j'ai oublié dans la mise à jour de remettre la variable date.
var jsonObject={ 
   "nom":nom,
   "description":desc,
   "capacite":capacite,
   "pelouse":pelouse,
   "transport":transport,
   "image":image
       };

Voila pourquoi je perdais les données de celle-ci.

Donc conclusion on est pas obliger d'utiliser l'objet spécifique Date() une variable quelconque est suffisante.

Merci quand même d'avoir prit le temps de me répondre.
0