日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]...

發(fā)布時(shí)間:2025/4/5 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hocon配置文件_GitHub - Himmelt/Hocon: Simple Hocon Configuration Library [轻量 Hocon 配置库]... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。