我想在持久性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飘带也没有运气。建议?
答案 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');