hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...
Hocon
Simple Hocon Configuration Library
輕量 Hocon 配置庫
簡介
這是一個輕量級的 Hocon 配置庫,沒有其他依賴項。
注意,這是一個使用 Hocon 格式的配置庫,而不是完整的 Hocon 解析庫。
該配置庫除了使用結點 -- Node 手動獲取配置外,還可以使用 @Setting 注解字段,以自動獲取配置。
使用 NodeMap 的 void modify(Object target); 方法,可以用結點的值修改目標對象對應名稱用 @Setting 注解的字段。
使用 NodeMap 的 void extract(Object source); 方法,可以提取源對象對應名稱用 @Setting 注解的字段的值到結點。
另外該庫支持對注釋內容的翻譯,可通過設置翻譯器實現本地化效果。
具體使用方法可以查看 Javadoc
使用依賴
Maven
org.soraworld
hocon
1.2.3-SNAPSHOT
pom
Gradle
compile 'org.soraworld:hocon:1.2.3-SNAPSHOT'
倉庫
repositories {
jcenter()
maven {
url = 'https://oss.jfrog.org/artifactory/oss-release-local/' //''https://oss.jfrog.org/artifactory/libs-release/'
}
maven {
url = 'https://oss.jfrog.org/artifactory/oss-snapshot-local/' //'https://oss.jfrog.org/artifactory/libs-snapshot/'
}
}
專用HOCON格式
根結點
根結點即文件所對應的結點, 根結點必定是一個 NodeMap 結點.
根結點下存儲 keyvalue 鍵值對, 其中 value 值可以是
基礎結點(NodeBase), 列表結點(NodeList), 映射結點(NodeMap)
基礎結點(值實質是字符串)
鍵 和 值 之間用 = 連接, 如果字符串含有空格或其他特殊字符,
則需要在字符串兩端加雙引號 "
詳細特殊字符的正則表達為 `.*[":=,+?`!@#$^&*{}\[\]\\].*
# 井號開頭的行全部認為是注釋
key1 = abc
key2 = "字符串值2"
key3 = 123.456
key4 = false
# 值的內容代表 空 null
keyNull = null
# 值的內容代表字符串 "null"
stringNull = "null"
列表結點
鍵 和 值 之間用 = 連接, 如果列表為空, 直接接 關閉的方括號 [],
如過列表不為空, 接 左方括號 [ , 新行填列表元素, 每個元素都新起一行.
元素結束, 新行 接 右方括號 ].
縮進只是為了美觀, 元素可以不用縮進, 頂行寫也是可以的.
# 字符串列表
stringlist = [
"字符串列表元素1"
字符串列表元素2
"string elemnet 3"
HelloWorld
]
# 整數列表
intlist = [
1
3
5
7
]
# 空列表
emptylist = []
# (整數)列表列表
listlist = [
[
1
2
4
]
[
6
8
9
]
]
# 映射列表(其存儲的元素是 映射)
maplist = [
# 第一個映射
{
key1 = abc
key2 = 123
}
# 第二個映射
#縮進只是為了美觀, 元素可以不用縮進, 頂行寫也是可以的.
{
key1 = false
hello = "Hello World"
}
]
映射結點
鍵 和 值 之間沒有內容, 如果映射為空, 直接接 關閉的花括號 {},
鍵 只能為字符串, 如果鍵含有特殊字符 則要加雙引號 ",
如過映射不為空, 接 左花括號 { , 新行填 映射鍵值對, 每個鍵值對都新起一行.
元素結束, 新行 接 右花括號 }.
縮進只是為了美觀, 元素可以不用縮進, 頂行寫也是可以的.
# 整數映射
int_map {
key1 = 233
ke2 = 456
xxx = 5749850394
}
# 空映射
# 鍵名可以為中文(常規使用時不建議)
空映射 {}
# 特殊字符的鍵要加 引號 ""
"!himmelt&shiki" {
# 這樣也是空映射
}
# 嵌套映射, 和 yaml/json 等 的層級關系一樣
父結點 {
鍵1 = 值1
子基礎結點 = 值2
空列表1 = []
列表2 = [
1
3
4
]
子列表結點 = [
{
鍵1 = 值1
鍵2 = 值2
空列表1 = []
}
{
鍵11 = 值11
鍵22 = 值22
空列表11 = []
}
]
子映射結點 {
孫子鍵1 = "孫子值1"
孫子映射結點 {
重孫子鍵 = 1234567
}
}
}
示例
public class Test{
@Setting(comment = "comment.lang")
protected String lang = "zh_cn";
@Setting(comment = "comment.debug")
protected boolean debug = false;
protected final Path confile;
protected final Options options = Options.build();
public Manager(Path path) {
this.path = path;
this.options.setTranslator(this::trans);
this.options.registerType(new LocationSerializer());
this.confile = path.resolve(plugin.getId().replace(' ', '_') + ".conf");
}
public boolean load() {
try {
FileNode rootNode = new FileNode(confile.toFile(), options);
rootNode.load(true);
rootNode.modify(this);
options.setDebug(debug);
return true;
} catch (Throwable e) {
return false;
}
}
}
總結
以上是生活随笔為你收集整理的hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ghost安装器怎么用 Ghost安装器
- 下一篇: 电脑怎么开机进入bios界面 电脑如何进