Javaはyamlプロファイルの読み取りを実現
よく使われるプロファイルはyaml、xml、properties、jsonなどがありますが、今日は主にyamlファイルの読み取りを記録したいと思います.くだらないことは言わないで、直接コードをつけます.
よくあるyamlは
server:localhost:8080/user
f1:
name:zhangsan
age:18
f2:
name:lisi
age:29
orderList: apple, paper, car,glass
簡単な分析の下でコード:まずsnakeyaml-1.15をインポートする必要があります.jarのjarパケットは、次にパラメータ付き構造関数を定義し、インスタンス化時に解析するプロファイルを に渡す.次にyamlで指定するkeyに対応するvalueを取得する方法がある、yamlはいずれもkey-valueの形式であるため、プロファイルを多重mapに変換し、すべてのkeyを取得し、参照に基づいて対応するvalueを取得する必要がある. getymlを使用してkeyに転送すればよい.取得したvalueがlistである場合、listで特殊文字で配列に分割することができ、その後、配列を操作することができる .
他のタイプのプロファイルは、全体的な考え方が同じであるため、一つ一つ説明しません.
余談ですが、yamlにはkeyやvalueとしてはいけない文字がいくつか残っています.書くときは大丈夫かもしれませんが、ショートカットフォームを使うときは、あなたが維持している値が変更されます.うん、私はこの穴に落ちました.列に並んで穴に入ってほしいです.
package com.ex.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.yaml.snakeyaml.Yaml;
public class YmlUtil {
protected String yml = null;
private Logger logger = LogManager.getLogger(YmlUtil.class);
public YmlUtil(String yml) {
this.yml = yml;
}
public Object getYml(String path) {
Yaml yaml = new Yaml();
URL url = YmlUtil.class.getClassLoader().getResource(yml);
if (url != null) {
Map map;
try {
map = (Map) yaml.load(new FileInputStream(url.getFile()));
return getValue(map, path);
} catch (FileNotFoundException e) {
logger.info("can not find the yml file, please double check");
return null;
}
} else {
return null;
}
}
@SuppressWarnings("rawtypes")
public static Object getValue(Map map, String value) {
String[] values = value.split("\\.");
Map m = map;
int len = values.length - 1;
for (int i = 0; i < len; i++) {
if (m.containsKey(values[i])) {
m = (Map) m.get(values[i]);
} else {
return null;
}
}
return m.get(values[len]);
}
}
よくあるyamlは
server:localhost:8080/user
f1:
name:zhangsan
age:18
f2:
name:lisi
age:29
orderList: apple, paper, car,glass
簡単な分析の下でコード:
他のタイプのプロファイルは、全体的な考え方が同じであるため、一つ一つ説明しません.
余談ですが、yamlにはkeyやvalueとしてはいけない文字がいくつか残っています.書くときは大丈夫かもしれませんが、ショートカットフォームを使うときは、あなたが維持している値が変更されます.うん、私はこの穴に落ちました.列に並んで穴に入ってほしいです.