?前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
?YAML是“另一種標記語言”的外語縮寫,YAML 是一種比JSON(json多層次{ 與 [ 會被搞暈的)更直觀的表現形式,展示上更易查錯和關系描述。因為不需要一個專業工具就可以排查正確性。YAML目前有多種語言提供了支持。
JAVA最終是要被序列化或反序列化,Jackson 提供了YAMLFactory.,可以方便解析YAML,并且可以無縫結合ObjectMapper.對原有系統改動最小。
Maven 引用以下包
?
?
<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-yaml</artifactId><version>2.3.3</version>
</dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.3.3</version></dependency>
?
public class YmalFc<T> {2 3 private final YAMLFactory yamlFactory;4 private final ObjectMapper mapper;5 private final Class<T> klass;6 7 public YmalFc(Class<T> klass) {8 this.klass = klass;9 this.yamlFactory = new YAMLFactory();
10 this.mapper = new ObjectMapper();
11 mapper.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
12
13 }
14
15 public T build(String path) throws IOException {
16 try {
17 InputStream input =new FileInputStream(path);
18 YAMLParser yamlParser = yamlFactory.createParser(input);
19 final JsonNode node = mapper.readTree(yamlParser);
20 TreeTraversingParser treeTraversingParser = new TreeTraversingParser(node);
21 final T config = mapper.readValue(treeTraversingParser, klass);
22 return config;
23 } catch (Exception e) {
24 throw e;
25 }
26 }
27
28 public static void main(String[] args) {
29 Contact contact = new Contact();
30 YmalFc<Contact> ymalFc = new YmalFc<Contact>(Contact.class);
31 try {
32 contact = ymalFc.build(new FileConfigurationSourceProvider(), "contact.yml");
33 } catch (IOException e) {
34 e.printStackTrace();
35 }
36 }
37 }
public class Contact {2 @JsonProperty3 public String name;4 @JsonProperty5 public int age;6 7 public String getName() {8 return name;9 }
10 public void setName(String name) {
11 this.name = name;
12 }
13 public int getAge() {
14 return age;
15 }
16 public void setAge(int age) {
17 this.age = age;
18 }
19 }
YML文件
?
contact:name: Nathan Sweetage: 28
YML文件像Python 一樣是一個需要注意空格縮進的語言。
?
?
原文見:https://www.cnblogs.com/shouhongxiao/p/5803644.html
另補充:
yml 文件 可以 這樣定義復雜數據,這樣就能自動把上面的 name 和 age 填充到里面。
?
name: Nathan Sweet
age: 28
nameAndAge: "name: ${name},age: ${age}"
?
?
?
?
?
?