【发布时间】:2019-12-18 01:20:36
【问题描述】:
我正在使用SnakeYAML 作为项目的 YAML 解析器,但我不知道如何设置嵌套的键。例如,这是一个包含嵌套键的 YAML 文件。
control:
advertising:
enabled: true
logging:
chat: true
commands: true
format: '%id% %date% %username% | %value%'
我的目标是能够轻松地将路径 control.advertising.enabled 或 any 其他路径设置为任何值。
当我使用时
void Set(String key, Object value, String configName){
Yaml yaml = new Yaml();
OutputStream oS;
try {
oS = new FileOutputStream(main.getDataFolder() + File.separator + configName);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
Map<String, Object> data = new HashMap<String, Object>();
// set data based on original + modified
data.put(key, value);
String output = yaml.dump(data);
try {
oS.write(output.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
设置值,而不是获取
logging:
chat: true
commands: true
format: '%id% %date% %username% | %value%'
整个 yaml 文件被清除,我只得到
{logging.chat: false}
谢谢!
【问题讨论】:
-
好吧,你永远不会加载旧的 YAML 文件;相反,您只需创建一些数据并将其转储,当然它不包含以前的值。您是否尝试过为 YAML 的内容定义 POJO,然后使用
loadAs将 YAML 加载到该 POJO 中?这将使设置值并将其写出来变得非常简单。 -
我不太明白你现在想让我做什么。我有这个pastebin.com/LA1585cv