Dropbox sync api在JSON文件中写入字符串

时间:2014-01-16 11:38:36

标签: android json dropbox dropbox-api

我正在尝试在包含其他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;
}

1 个答案:

答案 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());

希望你完成了