Android Internen Speicher, wie Sie richtig zu Parsen einer JSON-text-Datei

Ich bin erstellen einer Android-app, die erstellt eine text Datei mit dem JSON-Objekte und schreibt diese in den internen Speicher. Ich habe den folgenden code tun:

JSONObject myJSON = new JSONObject();
//Set the JSON object with website, length and Id (time-stamp)
try {
    myJSON.put("Length", trim)
    .put("Website", data)
    .put("Id", tx);
} catch (JSONException e1) {
    e1.printStackTrace();
}

//Convert JSON object to a string and add a comma
String myJSONString = myJSON.toString();
myJSONString += ", ";

try {
     FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND);
     fos.write(myJSONString.getBytes());
     fos.close();
     //Log.d(TAG, "Written to file");

} catch (Exception e) {
    Log.d(TAG, "cought");
    e.printStackTrace();
}

Jetzt bekomme ich eine text-Datei, die sieht so aus:

{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10}, 

Möchte ich jetzt sammeln, dass die Daten in der JSON-Datei. Die app muss schreiben, speichern und abrufen von JSON. Das problem ist wenn ich zum Parsen der JSON-Objekte aus der Datei mit:

String x = "";
InputStream is = this.getResources().openRawResource(R.raw.pwh);
byte [] buffer = new byte[is.available()];
while (is.read(buffer) != -1);
String jsontext = new String(buffer);
JSONArray entries = new JSONArray(jsontext);

x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";

int i;
for (i=0;i<entries.length();i++)
{
    JSONObject post = entries.getJSONObject(i);
    x += "------------\n";
    x += "Id:" + post.getString("Id") + "\n";
    x += "Length:" + post.getString("Length") + "\n\n";
}

Wirft es einen Fehler. Ich habe die parsing-code von einem tollen tutorial an: http://www.ibm.com/developerworks/web/library/x-andbene1/?ca=drs-#author1
In diesem Beispiel ist der code erwartet die Klammern um die gesamte Datei und kein Komma nach dem letzten Objekt. Also ich würde brauchen:

[{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10}]

Aber ich Schreibe diese JSON-Zeilen nacheinander in meinem code, Wie kann ich manipulieren, die JSON-text-Datei, um es in das erwartete format?

UPDATE:

Das problem ist noch, dass, wenn der Benutzer schreibt die JSON-array in die Datei und dann kommt wieder und ändert es wieder, Sie bekommen zwei JSON-arrays in dieser Datei. Etwa so:

[
     {
          "phonenumber": "15555215554",
          "time": "20110113T173835",
          "username": "edit username",
          "email": " edit email",
          "password": "edit password"
     }
][
     {
          "phonenumber": "15555215554",
          "time": "20110113T173900",
          "username": "edit username",
          "email": " edit email",
          "password": "edit password"
     },
     {
          "phonenumber": "15555215554",
          "time": "20110113T173900",
          "username": "edit username",
          "email": " edit email",
          "password": "edit password"
     }
]

Wie kann ich Lesen das erste array, fügen Sie die zweite und dann wieder die Datei schreiben mit beiden arrays, die zu einer verschmolzen?

InformationsquelleAutor Chris | 2010-12-12
Schreibe einen Kommentar