hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...
Hocon
Simple Hocon Configuration Library
輕量 Hocon 配置庫(kù)
簡(jiǎn)介
這是一個(gè)輕量級(jí)的 Hocon 配置庫(kù),沒(méi)有其他依賴項(xiàng)。
注意,這是一個(gè)使用 Hocon 格式的配置庫(kù),而不是完整的 Hocon 解析庫(kù)。
該配置庫(kù)除了使用結(jié)點(diǎn) -- Node 手動(dòng)獲取配置外,還可以使用 @Setting 注解字段,以自動(dòng)獲取配置。
使用 NodeMap 的 void modify(Object target); 方法,可以用結(jié)點(diǎn)的值修改目標(biāo)對(duì)象對(duì)應(yīng)名稱用 @Setting 注解的字段。
使用 NodeMap 的 void extract(Object source); 方法,可以提取源對(duì)象對(duì)應(yīng)名稱用 @Setting 注解的字段的值到結(jié)點(diǎn)。
另外該庫(kù)支持對(duì)注釋內(nèi)容的翻譯,可通過(guò)設(shè)置翻譯器實(shí)現(xiàn)本地化效果。
具體使用方法可以查看 Javadoc
使用依賴
Maven
org.soraworld
hocon
1.2.3-SNAPSHOT
pom
Gradle
compile 'org.soraworld:hocon:1.2.3-SNAPSHOT'
倉(cāng)庫(kù)
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格式
根結(jié)點(diǎn)
根結(jié)點(diǎn)即文件所對(duì)應(yīng)的結(jié)點(diǎn), 根結(jié)點(diǎn)必定是一個(gè) NodeMap 結(jié)點(diǎn).
根結(jié)點(diǎn)下存儲(chǔ) keyvalue 鍵值對(duì), 其中 value 值可以是
基礎(chǔ)結(jié)點(diǎn)(NodeBase), 列表結(jié)點(diǎn)(NodeList), 映射結(jié)點(diǎn)(NodeMap)
基礎(chǔ)結(jié)點(diǎn)(值實(shí)質(zhì)是字符串)
鍵 和 值 之間用 = 連接, 如果字符串含有空格或其他特殊字符,
則需要在字符串兩端加雙引號(hào) "
詳細(xì)特殊字符的正則表達(dá)為 `.*[":=,+?`!@#$^&*{}\[\]\\].*
# 井號(hào)開(kāi)頭的行全部認(rèn)為是注釋
key1 = abc
key2 = "字符串值2"
key3 = 123.456
key4 = false
# 值的內(nèi)容代表 空 null
keyNull = null
# 值的內(nèi)容代表字符串 "null"
stringNull = "null"
列表結(jié)點(diǎn)
鍵 和 值 之間用 = 連接, 如果列表為空, 直接接 關(guān)閉的方括號(hào) [],
如過(guò)列表不為空, 接 左方括號(hào) [ , 新行填列表元素, 每個(gè)元素都新起一行.
元素結(jié)束, 新行 接 右方括號(hào) ].
縮進(jìn)只是為了美觀, 元素可以不用縮進(jìn), 頂行寫(xiě)也是可以的.
# 字符串列表
stringlist = [
"字符串列表元素1"
字符串列表元素2
"string elemnet 3"
HelloWorld
]
# 整數(shù)列表
intlist = [
1
3
5
7
]
# 空列表
emptylist = []
# (整數(shù))列表列表
listlist = [
[
1
2
4
]
[
6
8
9
]
]
# 映射列表(其存儲(chǔ)的元素是 映射)
maplist = [
# 第一個(gè)映射
{
key1 = abc
key2 = 123
}
# 第二個(gè)映射
#縮進(jìn)只是為了美觀, 元素可以不用縮進(jìn), 頂行寫(xiě)也是可以的.
{
key1 = false
hello = "Hello World"
}
]
映射結(jié)點(diǎn)
鍵 和 值 之間沒(méi)有內(nèi)容, 如果映射為空, 直接接 關(guān)閉的花括號(hào) {},
鍵 只能為字符串, 如果鍵含有特殊字符 則要加雙引號(hào) ",
如過(guò)映射不為空, 接 左花括號(hào) { , 新行填 映射鍵值對(duì), 每個(gè)鍵值對(duì)都新起一行.
元素結(jié)束, 新行 接 右花括號(hào) }.
縮進(jìn)只是為了美觀, 元素可以不用縮進(jìn), 頂行寫(xiě)也是可以的.
# 整數(shù)映射
int_map {
key1 = 233
ke2 = 456
xxx = 5749850394
}
# 空映射
# 鍵名可以為中文(常規(guī)使用時(shí)不建議)
空映射 {}
# 特殊字符的鍵要加 引號(hào) ""
"!himmelt&shiki" {
# 這樣也是空映射
}
# 嵌套映射, 和 yaml/json 等 的層級(jí)關(guān)系一樣
父結(jié)點(diǎn) {
鍵1 = 值1
子基礎(chǔ)結(jié)點(diǎn) = 值2
空列表1 = []
列表2 = [
1
3
4
]
子列表結(jié)點(diǎn) = [
{
鍵1 = 值1
鍵2 = 值2
空列表1 = []
}
{
鍵11 = 值11
鍵22 = 值22
空列表11 = []
}
]
子映射結(jié)點(diǎn) {
孫子鍵1 = "孫子值1"
孫子映射結(jié)點(diǎn) {
重孫子鍵 = 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;
}
}
}
總結(jié)
以上是生活随笔為你收集整理的hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ghost安装器怎么用 Ghost安装器
- 下一篇: 电脑怎么开机进入bios界面 电脑如何进