试图附加到json文件

时间:2014-06-02 10:38:41

标签: json file-io

我想在持久性json文件中保存一些关于推文的数据。我正在使用org.codehaus.jackson.JsonGenerator将推文写入文件,当它们一次性插入时工作正常。我的代码:

JsonGenerator g = new JsonFactory().createJsonGenerator(jsonFile, JsonEncoding.UTF8);
for(Tweet t : list){
    g.writeStartObject();

g.writeStringField(ID_FIELD, t.getTweetID());
g.writeStringField(DATE_FIELD, dateFormat.format(t.getDate()));
if(t.isRetweet())
    g.writeStringField(RETWEET_FIELD, t.getOriginalTweet());

g.writeArrayFieldStart(HASHTAG_FIELD);
for(String s : t.getHashtags())
    g.writeString(s);
g.writeEndArray();

g.writeEndObject();
}
g.close();

问题是,如果我想在同一个文件中添加另一串推文,这个函数将覆盖以前的推文。我一直试图让发电机保持开启状态,而不是每次关闭发电机,但它首先搞砸了写入过程。此外,API并没有暗示“继续我离开的地方”的任何方式。到目前为止,其他json飘带也没有运气。建议?

1 个答案:

答案 0 :(得分:1)

不确定我是否理解正确,但如果问题是您无法将多个JSON对象附加到输出中 - 那么只需打开FileWriter并确保目标不会自动关闭每个对象写。

例如:

FileWriter output = new FileWriter("/path/to/file");

ObjectWriter jsonWriter = new ObjectMapper()
    .configure(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT, false)
    .writer();

jsonWriter.writeValue(output, object1); output.write('\n');
jsonWriter.writeValue(output, object2); output.write('\n');
jsonWriter.writeValue(output, object3); output.write('\n');