Das ist mein Code des Sparens json ist:Lesen json von android internen Speicher Fehler
public void saveCrimes (ArrayList<Crime> crimes) throws JSONException, FileNotFoundException, IOException {
JSONArray jsonArray = new JSONArray();
for (Crime c:crimes)
{
jsonArray.put(c.convertToJson());
}
Writer writer = null;
OutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE);
writer = new OutputStreamWriter(out);
writer.write(jsonArray.toString());
writer.close();
out.close();
}
And this is my code of reading json :
public ArrayList<Crime> loadCrimes() throws IOException, JSONException {
ArrayList<Crime> crimes = new ArrayList<Crime>();
BufferedReader reader = null;
StringBuilder builder = new StringBuilder();
String line = null;
try {
InputStream in = context.openFileInput(fileName);
reader = new BufferedReader(new InputStreamReader(in));
while((line = reader.readLine()) != null)
builder.append(line);
JSONArray array = (JSONArray)new JSONTokener(builder.toString()).nextValue();
for(int i = 0; i < array.length(); i++)
{
crimes.add(new Crime(array.getJSONObject(i)));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally {
if (reader != null)
reader.close();
}
return crimes;
}
Die Frage ist: Code json des Sparens richtig ist, aber wenn ich auf meinem Handy meine Anwendung ausführen, neue Verbrechen, und starten Sie die App neu, JSON gespeichert vor kann nicht gelesen werden. Was mich verwirrter macht ist, dass es gut funktioniert, wenn ich es auf einem Emulator starte. Warum?
und welchen Fehler bekommen Sie? keine Datei? oder vielleicht ein Fehler beim Schreiben? hast du debuggen? –
'create new crime, und starten Sie die App neu, JSON gespeichert vor kann nicht gelesen werden.'. Meinst du, dass du nur das letzte gespeicherte Verbrechen lesen kannst und nicht die alten? – greenapps
Sie sollten zuerst prüfen, ob 'builder.toString()' den richtigen Text liefert. Log es oder Toast es. – greenapps