我正在尝试在包含其他JSON对象的txt文件中编写JSON字符串。 txt文件的结构是:
{
"array": [
{
"id": "1",
"owner": "email_string",
"title": "title_string",
"content": "content_string"
},
{
"id": "2",
"owner": "email_string",
"title": "title_string",
"content": "content_string"
}
]
}
现在在我的代码中,我构建了新的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();
}
SOLUTION:
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;
}
答案 0 :(得分:1)
首先使用以下代码
阅读您的文件public String readFile(String filepath) throws IOException {
File f = new File(filepath);
FileInputStream in = new FileInputStream(f);
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");
return filedata;}
然后形成JSONArray,因为我已经看过你的JSON结构,你可以用以下方式做到这一点
String data = readFile("your filepath");
JSONObject data = new JSONObject(data);
JSONArray newarray = (JSONArray)data.get("array");
然后你可以使用JSONArray的“put”方法并在现有的jsonarray中追加数据。所以就像
newarray.put(index,your_data);
然后使用以下代码将相同的数据写入文件
FileOutputStream fos = new FileOutputStream("your file name", false);
PrintStream ps = new PrintStream(fos);
ps.append(data.toString());
希望你完成了