我试图从yaml文件读取输入,具有以下内容:
- !com.example.Contact
name: Nathan Sweet
age: 28
address: pak
phoneNumbers:
- !com.example.Phone
name: Home
number: 1122
- !com.example.Phone
name: Work
number: 3322
- !com.example.Contact
name: Nathan Sw1eet
age: 281
address: pak1
phoneNumbers:
- !com.example.Phone
name: Home1
number: 11221
- !com.example.Phone
name: Work1
number: 33211
Run Code Online (Sandbox Code Playgroud)
我有以下定义:
import java.util.List;
import java.util.Map;
public class Contact
{
public String name;
public int age;
public String address;
public List phoneNumbers;
}
public class Phone
{
public String name;
public String number;
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我阅读这些电话号码的方法
我不得不重写你的yaml ...
- !!com.example.Contact
name: Nathan Sweet
age: 28
address: pak
phoneNumbers:
- !!com.example.Phone
name: Home
number: 1122
- !!com.example.Phone
name: Work
number: 3322
- !!com.example.Contact
name: Nathan Sw1eet
age: 281
address: pak1
phoneNumbers:
- !!com.example.Phone
name: Home1
number: 11221
- !!com.example.Phone
name: Work1
number: 33211
Run Code Online (Sandbox Code Playgroud)
Java ......
package com.example;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
public class LoadContacts {
private static String yamlLocation="classpath:contacts.yaml";
public static void main(String[] args) throws IOException{
Yaml yaml = new Yaml(new Constructor(Collection.class));
InputStream in = null;
Collection<Contact> contacts;
try {
in = new FileInputStream(new File(yamlLocation));
contacts = (Collection<Contact>) yaml.load(in);
} catch (IOException e) {
final DefaultResourceLoader loader = new DefaultResourceLoader();
final Resource resource = loader.getResource(yamlLocation);
in = resource.getInputStream();
contacts = (Collection<Contact>) yaml.load(in);
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
// no-op
}
}
}
for(Contact contact:contacts){
System.out.println(contact.name + ":" + contact.address + ":" + contact.age );
}
}
}
Run Code Online (Sandbox Code Playgroud)