Я создаю приложение для Android, которое создает текстовый файл с объектами JSON и записывает его во внутреннее хранилище.У меня есть следующий код для этого:
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();
}
Теперь я получаю текстовый файл, который выглядит так:
{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10},
Я хотел бы сейчас собрать эти данные в JSONфайл.Приложение должно писать, хранить и получать JSON.Проблема в том, что когда я иду, чтобы разобрать объекты JSON из файла, используя:
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";
}
Выдает ошибку.Я получил код синтаксического анализа из большого учебника по адресу: http://www.ibm.com/developerworks/web/library/x-andbene1/?ca=drs-#author1 В этом примере код ожидает скобки вокруг всего файла и без запятой после последнего объекта.Поэтому мне нужно:
[{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10}]
Но я пишу эти строки JSON по одному в моем коде;Как я могу манипулировать текстовым файлом JSON, чтобы получить его в ожидаемом формате?
ОБНОВЛЕНИЕ:
Проблема по-прежнему заключается в том, что если пользователь записывает массив JSON вфайл, а затем возвращается и изменяет его снова, вы получаете два массива JSON в этом файле.Вот так:
[
{
"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"
}
]
Как мне прочитать первый массив, добавить второй, а затем переписать файл, объединяя оба массива в один?