簡體   English   中英

Java解析嵌套的conf文件

[英]Java Parsing nested conf file

我有一個配置文件:

company=My Company
num_users=3

user={
  name="John"
  age=24
}

user={
  name="Anna"
  age=27
}

user={
  name="Jack"
  age=22
}

我正在嘗試使用Java解析此配置文件。 我嘗試了java.util.Properties,但是我不知道如何獲取每個用戶數據。

我仍然可以使用getProperty方法獲取公司財產的價值。

請幫我解決一下這個。

謝謝!

具有相同屬性名稱但值不同但getProperty(String key)它們,因為它將返回第一個值。

其次,您不能直接訪問嵌套屬性。現在,這里的getProperty將返回包含{}作為值的整個String ,因為這就是您的值所包含的內容。您可能會獲取值並執行一些操作以從整個String獲取值。因為屬性文件應該具有僅key=value格式意味着左側應為key,右側應為key=value 。就是這樣。

如果要存儲代碼中指定的值,則應使用JSON格式,這樣可以將整個JSON數據存儲到文件中,並在使用時從文件中取回。

如果使用java.util.Properties類加載配置文件,則會得到以下結果:

{company=My Company, age=22, user={, name="Jack", }=, num_users=3}

原因是,您可以參考javaDoc中的Properties類的“ public void load(Reader reader)”方法。

由於您沒有為配置文件描述詳細的語法格式,因此基於示例輸入,以下示例代碼可以正確檢索name = value:

String reg="(\\w+)\\s*=\\s*((?>\\{[^\\{\\}]*\\})|(?>.*$))";
Pattern pMod = Pattern.compile(reg, Pattern.MULTILINE);
Matcher mMod = pMod.matcher(line);
while (mMod.find()) {
    System.out.println(mMod.group(1));
    System.out.println(mMod.group(2));
}

輸出為:

company
My Company
num_users
3
user
{
  name="John"
  age=24
}
user
{
  name="Anna"
  age=27
}
user
{
  name="Jack"
  age=22
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM