2015-04-13 13 views
8

Voglio implementare un'app, che mostrerà il numero del percorso, il pilota è salito a bordo in google map. Quindi per trovare il numero del percorso ho bisogno di alcune informazioni sui percorsi, che sono definiti nel file JSON. Le informazioni nel file JSON verranno elaborate e analizzate offline dall'app. Dovrebbe essere installato e disinstallato anche con l'app. Il file JSON contiene più di 100 route_direction. Assomiglierà al codice qui sotto. In quale cartella posso archiviare il file JSON nel mio progetto Android? E qual è il modo migliore per archiviare dati come questo?Android: qual è il modo migliore per archiviare dati JSON offline per l'app in Android?

di file 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} 
 

 
        } 
 

 

 
       } 
 

 
     },........ 
 

 
    ] 
 

 
}

+3

è necessario convertire in un oggetto e conservare in uno SQLite Banca dati. Se si desidera salvarlo come file, utilizzare la cartella delle risorse. –

+0

@Jorge Campos: Come posso convertire il file JSON in un oggetto? –

+0

Dai un'occhiata a questa discussione: http://stackoverflow.com/questions/6079505/converting-json-string-to-java-object Si noti che la risposta che menziona GSon utilizza una libreria esterna di google. –

risposta

10

Forse si può risparmiare utilizzando SharedPreferences. È possibile memorizzare un JSON oggetto/array facendo:

risparmio JSON per SharedPreferences:

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

Ottenere il JSON memorizzati:

JsonObject jsonObject = PreferenceManager. 
getDefaultSharedPreferences(this).getString("theJson",""); 
+0

se si nota che ho una stringa JSON complessa. posso farlo anche con SharedPreferneces? –

+0

@MrAsker sicuro, è possibile salvare un complesso o di grandi dimensioni senza alcun problema. Se lo scegli con l'uso di sharedPreferences (e se stai salvando il json come una stringa) fai attenzione alla formattazione della stringa. Spero che aiuti! –

+1

Utilizzare le preferenze condivise se è necessario memorizzare piccole quantità di dati. Rif: [Android-Storage] (https://developer.android.com/training/basics/data-storage/index.html) –

0

È memorizzare i file abitrary che ti piace per confezionare con la tua applicazione nella cartella di asset

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

principali/attività/

Questo è vuoto. Puoi usarlo per memorizzare file di risorse non elaborate. I file che vengono salvati qui vengono compilati in un file .apk così com'è e il nome file originale viene mantenuto. È possibile navigare in questa directory nello allo stesso modo di un file system tipico utilizzando gli URI e leggere i file come uno stream di byte utilizzando l'AssetManager. Ad esempio, questa è una buona posizione per trame e dati di gioco.

See this question on how to read from assets.

+1

Sappi che questo è un vecchio post ma fai attenzione a questa soluzione. Non memorizzare alcuna informazione sensibile nella cartella delle risorse. La cartella può essere letta (e modificata) da un utente esperto. – MarcJames

Problemi correlati