IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comparaison JSON ou Javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Par défaut Comparaison JSON ou Javascript
    Bonsoir à tous,

    Je réécris ce message après que mon pavé est été perdu suite à une déconnexion du forum

    Je suis face à un gros soucis. J'ai fais pas mal de recherche en JSON pour le résoudre sans réel succès.

    En gros je fais une appli en Javascript (quelle idée aussi ^^) pour récupérer des flux RSS sur une appli mobile via phonegap (une api qui permet de faire des applis mobiles avec des langages web). Ces flux sont classés en catégorie.

    J'ai un fichier de configuration sur un serveur distant en JSON qui contient les catégories et leur flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    {
    	"Categories": [
     
    		{ 	
    			"nomCategorie" : "Transport",
    			"flux" : [
     
    				{
    					"nomFlux" : "SNCF : Information",
    					"adresseFlux" : "http://www.ter-sncf.com/Regions/Auvergne/Fr/Transverses/FluxRss/FluxRss_Actus.aspx"
    				},
    				{
    					"nomFlux" : "T2C",
    					"adresseFlux" : "http://www.t2c.fr/rss.xml"
    				}
     
    			]
    		},
    		{
     
    			"nomCategorie" : "TOTO",
    			"flux" : ....
    Avant c'était tout en XML donc parseur tableau et tout mais c'est plus très propre et json est plus adapté ici.

    Donc grâce à $.getJSON(adresseDeMonFichierDeConfig) je récupère le tout sous forme d'un objet JSON. Maintenant, l'appli doit fonctionner hors ligne donc j'ai une base SQLite sur mon téléphone contenant la même chose. MAIS ! Si on modifie le fichier de config on modifie la table. Des catégories ou flux peuvent donc s'ajouter ou disparaitre.

    Et c'est là mon problème car actuellement je fais toute la comparaison en tableau JS et c'est très moche et lourd ! et en plus j'ai reconverti mon objet JSON en tableau -_- *boulet!!!!*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    function comparaison(){
    	var tableauCategorieASupprimer = new Array();
    	var tableauFluxASupprimer = new Array();
     
            //Parcourt du tableau de catégories + flux de la base de données.
    	for(var i = 0; i<tableauCategorieBDD.length; i++)
    	{
                    //Si La config ne contient pas une entrée en base alors on la met dans le tableau des entrées à supprimer.  
    		if(tableauCategorie.indexOf(tableauCategorieBDD[i]) == '-1'){
     
    			tableauCategorieASupprimer.push(tableauCategorieBDD[i]);
     
    		}
     
                    //Pareil pour les flux mais ça ne marche pas pour le coup enfin je sais pas trop. Mais si je règle le soucis avec les catégories je pourrais me débrouiller.
    		for(var l=0; l<tableauCategorieBDD[i]["flux"].length; i++)
    		{
    			if(tableauCategorie[i]["flux"].indexOf(tableauCategorieBDD[i]['flux'][l]) == '-1')
    			{
    				tableauCategorieBDD[i]['flux'].splice(tableauCategorieBDD[i]['flux'].indexOf(tableauCategorieBDD[i]['flux'][l]),1);
     
    			}
     
    		}
     
     
    	}
     
            //Là on parcourt le tableau de config du serveur distant
    	for(var j =0; j<tableauCategorie.length; j++)
    	{
                   //Si une catégorie du fichier distant n'est pas dans le tableau de la base de donnée alors on l'ajoute. 
    		if(tableauCategorieBDD.indexOf(tableauCategorie[j]) == '-1')
    		{
    			tableauCategorieBDD.push(tableauCategorie[j]);
    		}	
     
                    //Pareil pour les flux
    		for(var m=0; m<tableauCategorie[j]['flux'].length; m++)
    		{
    			if(tableauCategorieBDD.indexOf(tableauCategorie[j]['flux'][m]) == '-1')
    			{
    				tableauCategorieBDD[j]['flux'].push(tableauCategorie[j]['flux'][m]);
    			}
    		}
    	}
     
            //On supprime les categories mises dans le tableau a supprimer du tableau categorieBaseDeDonnée
    	for(var n = 0; n<tableauCategorieASupprimer.length; n++)
    	{
    tableauCategorieBDD.splice(tableauCategorieBDD.indexOf(tableauCategorieASupprimer[n]), 1);
    	}
    }
    Donc, selon moi, à la fin on devrait avoir :
    tableauCategorieBDD qui contient toutes les catégories et leurs flux à ajouter en base de données.
    tableauASupprimer qui contient toutes les catégories et leurs flux à supprimer dans la base de donnée.

    Problème 1 : à la fin le tableauCategorieBDD est vide

    Problème 2 : le plus important : Je voudrais garder mon objet JSON de base, récupérer mes infos de la BDD sous forme de tableau (phonegap oblige) et convertir se tableau en un objet JSON et comparer les deux objets JSON.

    Et là ... c'est le drame...
    J'ai pas mal cherché mais on parle du JSon beaucoup pour partager des données ou beaucoup avec PHP mais le problème c'est que l'API ne prend que le JS/JQUERY/JSON etc ...

    Pouvez-vous m'aider ? Pistes, conseils .... Je suis ouvert à tout !

    PS : j'ai honte de sortir un code pareil ...

    EDIT : A la rigueur je transforme mon tableau que je créer en récupérant la base de donnée en une chaine de caractère sous forme JSON, je fais mes comparaison (je suis preneur de tuyaux pour comparer des objets JSON) et j'enregistre les différences dans deux tableau : A supprimer, a ajouter.

    Qu'en pensez-vous ?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    as tu essayé la syntaxe for..in..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var data = {
      'key_1' : 1250,
      'key_2' :  250,
      'key_3' : 3250
    };
    var i, sTmp = '';
    for( i in data){
      sTmp +=  i +' -> ' +data[i] +'\n';
    }
    alert( sTmp);

Discussions similaires

  1. [Prototype] Lire du JSON en javascript
    Par sliderman dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 18/02/2008, 10h44
  2. [POO] Restaurer un objet JSon en javascript
    Par GandalfZeGrey dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 21/01/2008, 15h14
  3. [AJAX] Récupération d'un fichier JSON avec javaScript
    Par guerin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/11/2006, 19h05
  4. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo