Я пытаюсь написать строку JSON в txt-файле, который содержит другие объекты JSON. Структура текстового файла является:Dropbox sync api написать строку в файле JSON
{
"array": [
{
"id": "1",
"owner": "email_string",
"title": "title_string",
"content": "content_string"
},
{
"id": "2",
"owner": "email_string",
"title": "title_string",
"content": "content_string"
}
]
}
Сейчас в моем коде, я построил новую строку JSON отформатирован для добавления после последнего объекта, но я не знаю, как написать новую строку JSON после последнего JSON и перед символом ']'. Объект DropboxFile имеет метод getInputStream(), getWriteStream(), getAppendStream(). Полагаю, я должен использовать один из них, но я не знаю, как это сделать. Может кто-нибудь мне помочь?
Вот код, где я должен поставить запись:
DbxFileSystem dbxFs;
dbxFs = DbxFileSystem.forAccount(mDbxAcctMgr.getLinkedAccount());
DbxPath path = new DbxPath(NOTE_DB_PATH);
dbxFs.syncNowAndWait();
DbxFile file = dbxFs.open(path);
String JSONNote = JSONParser.buildJSONNoteString(title, content, currentUserEmail, id)+"\n";
// TODO Here I have to find the place to write my JSONNote string
dbxFs.syncNowAndWait();
file.close();
dbxFs.shutDown();
} catch (DbxException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
РЕШЕНИЕ:
DbxFileSystem dbxFs;
dbxFs = DbxFileSystem.forAccount(mDbxAcctMgr.getLinkedAccount());
DbxPath path = new DbxPath(NOTE_DB_PATH);
dbxFs.syncNowAndWait();
DbxFile file = dbxFs.open(path);
String JSONNote = JSONParser.buildJSONNoteString(title, content, currentUserEmail, id)+"\n";
JSONObject newJsonObj = new JSONObject(JSONNote);
String dataString = readFile(file);
JSONObject dataJSON = new JSONObject(dataString);
dataJSON.accumulate("array", newJsonObj);
file.writeString(dataJSON.toString());
dbxFs.syncNowAndWait();
file.close();
dbxFs.shutDown();
ReadFile() метод:
protected String readFile(DbxFile file) throws DbxException, IOException{
FileInputStream in = file.getReadStream();
int size = in.available();
byte c[] = new byte[size];
for (int i = 0; i < size; i++) {
c[i] = (byte) in.read();
}
String filedata = new String(c, "utf-8");
in.close();
return filedata;
}
вы хотите написать JSONNote подать это правильно –
Да ! но не в конце файла, сразу после последнего объекта JSON – Cardella
вы хотите добавить данные в json-массив, который у вас есть –