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 :
Avant c'était tout en XML donc parseur tableau et tout mais c'est plus très propre et json est plus adapté ici.
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" : ....
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!!!!*
Donc, selon moi, à la fin on devrait avoir :
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); } }
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 ?
Partager