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 :cry:
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:
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:
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 8O
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 ! :mrgreen:
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 ?