我想在yaml文件中添加一些实体,比如日志操作,就像这样。
item:
entityType: article
entityId: 318
created: 1655282744819
user: "admin"
title: "Morning"
eventType: "viewing"
item:
entityType: event
entityId: 339
created: 1655223444821
user: "admin"
title: "Evening"
eventType: "editing"
但我面临的情况下,我可以写yaml到一个新的文件只能。
objectMapper.writeValue(new File(path), logItem);
是否有任何可能追加数据到现有文件?提前感谢。
1条答案
按热度按时间hkmswyz61#
加载YAML,将新数据放入解析后的数据中,然后再次将整个数据序列化到其来源的文件中。
您不能简单地追加到YAML文件中,因为YAML文件表示节点的有向图,并且在节点图上没有有意义的 * append * 定义。当然,在字符流上有 * append * 的定义,但是您要做的是修改这个流所表示的数据,也就是节点图。简单地连接两个字符流,其中每一个都是有效的YAML文档,不一定产生有效的YAML文档。
如果您真的很专注,您可以使用发出解析事件的低级API,将您的新结构 * 作为事件 * 注入到该事件流中,然后再次 * 呈现 * 它(将其转换回字符流)。This answer显示了这在PyYAML中是如何工作的,这在Jackson中是不可能,因为API级别太高,但是如果您想坚持使用Java,可以使用SnakeYAML。level API与PyYAML非常相似。但是要注意,这可能不是您实际想要做的,因为您不能将
logItem
作为类示例,您需要将其作为事件序列。