2017-04-18 5 views
1

Ich habe eine JSON-Datei mit vielen Objekten. Diese Datei befindet sich in res/raw. Ich lese diese Datei und zeige Objekte in der Liste in meiner Benutzeroberfläche. Und nachdem der Benutzer die Aktivität mit dieser Liste abgeschlossen hat, werden Änderungen, die am häufigsten vorgenommen wurden, in der Datei gespeichert, die gelesen wurde.Wie json Datei mit Daten bearbeiten und speichern

Antwort

3

Wenn sich Ihre Datei in Ihrer APK-Datei befindet, können Sie sie nicht ändern. Stattdessen muss ein Flag im persistenten Speicher gespeichert werden. Wenn es ein erster Lauf Ihrer Anwendung ist, dann lesen Sie diese JSON-Datei von apk, verarbeiten Sie sie und speichern Sie sie im Dateisystem des Geräts.

Und bei jedem weiteren Lauf, überprüfen Sie das Flag, wenn es nicht der erste Lauf ist, lesen Sie die Datei aus dem Dateisystem und verarbeiten Sie sie weiter.

+0

Vielen Dank: 3 –

0

Dies wäre wahrscheinlich nur durch Schreiben auf externen Speicher möglich. Hier ist ein Code, den ich geschrieben habe, der Daten aus einer JSON-Datei liest und die Datei mit neuen Werten überschreibt. Sie benötigen hierfür die GSON-Bibliothek.

File file; // Your file! 
String input = (new BufferedReader(new FileReader(file))).readLine(); // Read file 
Gson gsoninterface = new Gson(); 
ArrayList fromjson = gsoninterface.fromJson(input, ArrayList.class); // Store items in JSON file to Java object 
fromjson.add(YourObject) // Add your value 
GsonBuilder gsonbuilder = new GsonBuilder(); // Make Gsonbuilder 
String a = gsonbuilder.create().toJson(fromjson); // Convert back to JSON 
FileOutputStream outputStream; // Setup FileOutputStream 
try { 
    outputStream = openFileOutput(file.getName(), Context.MODE_PRIVATE); // Open file for write 
    outputStream.write(a.getBytes()); // Write to file 
    outputStream.close(); // Close outputStream 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
1

Hier ist die schlechte Art und Weise Dinge statisch zu machen, aber auch für Sie dringend, wenn, können Sie JSON-Datei einmal und wandelt es in Java-Modell (pojo) Objekt und machen das Objekt statisch, wenn das nächste Mal gelesen Die gleiche Aktivität wird von diesem statischen Objekt aus aufgerufen, anstatt sie erneut zu lesen und zu analysieren. Aus Sicherheitsgründen können Sie überprüfen, ob das Pojo-Klassenobjekt null ist.

Verwandte Themen