web-dev-qa-db-fra.com

Android: quel est le meilleur moyen de stocker des données JSON hors ligne pour l'application dans Android?

Je souhaite implémenter une application qui affiche le numéro de route que le coureur a embarqué sur google map. Donc, pour trouver le numéro de route, j'ai besoin d'informations sur les routes définies dans le fichier JSON. Les informations contenues dans le fichier JSON seront traitées et analysées hors connexion à partir de l'application. Il devrait être installé et désinstaller avec l'application aussi. Le fichier JSON contient plus de 100 route_direction. Cela ressemblera au code ci-dessous. Dans quel dossier puis-je stocker le fichier JSON dans mon projet Android? Et quel est le meilleur moyen de stocker de telles données?

Fichier JSON:

{"route_direction":[
   {
     1_ab:{
                     
                    { 
                      stopsName_arrivalTime:{"abc":{"mon-fri":[05:33,06:00,06:30,...],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.337994, long:10.600423} ,

                    },
                    { 
                      stopsName_arrivalTime:{"def":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                         }
                                             }, 

                                             
                         stops_loca:{lat:53.740624, long:10.101322} 

                    },
                    { 
                      stopsName_arrivalTime:{"hgk":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.644834, long:10.203372} 

                    }



                }

       },

        {1_ba:{
                     
                    { 
                      stopsName_arrivalTime:{"hgk":{"mon-fri":[05:33,06:00,06:30],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.437994, long:10.400423} ,

                    },
                    { 
                      stopsName_arrivalTime:{"def":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                         }
                                             }, 

                                             
                         stops_loca:{lat:53.540624, long:10.601322} 

                    },
                    { 
                      stopsName_arrivalTime:{"abc":{"mon-fri":[],
                                                        "sat":[],
                                                        "son":[]
                                                               }
                                             }, 

                                             
                         stops_loca:{lat:53.244834, long:10.703372} 

                    }


                }

        },........

   ]

}
10
Mr Asker

Peut-être pouvez-vous les sauvegarder en utilisant SharedPreferences . Vous pouvez stocker un objet/tableau json en faisant:

Enregistrement de json dans SharedPreferences:

    PreferenceManager.getDefaultSharedPreferences(context).edit()
.putString("theJson",jsonObject.toString()).apply();

Obtenir le json stocké:

JsonObject jsonObject = PreferenceManager.
getDefaultSharedPreferences(this).getString("theJson","");
12
Darko Petkovski

En principe, il existe deux endroits où des données brutes peuvent être stockées: assets/et res/raw/(ressources brutes). Celles-ci ont été beaucoup discutées, par exemple, voir les liens:

La raison de l'actif et des ressources brutes dans Android

http://thedevelopersinfo.com/2009/11/27/using-files-as-raw-resources-in-Android/

http://www.41post.com/3985/programming/Android-loading-files-from-the-assets-and-raw-folders

2

Vous stockez des fichiers aléatoires que vous souhaitez empaqueter avec votre application dans le dossier des actifs

https://developer.Android.com/tools/projects/index.html

main/atouts / 

Ceci est vide Vous pouvez l'utiliser pour stocker des fichiers d'actifs bruts. Les fichiers que vous enregistrez ici sont compilés dans un fichier .apk tel quel, et le nom de fichier d'origine Est préservé. Vous pouvez naviguer dans ce répertoire de la même manière que Comme un système de fichiers classique utilisant des URI et lire des fichiers sous forme de flux d'octets À l'aide de AssetManager. Par exemple, il s’agit d’un bon Emplacement pour les textures et les données de jeu.

Voir cette question sur la façon de lire des actifs.

0
patrickf