假设我有一个需要传递以下格式的文件
Name: XYZ
SSN: 123
Name: ABC
SSN: 456
假设我创建了以下类
Class Data{
String name;
int ssn;
}
现在我需要解析上面的文件,对于每个条目,我需要创建一个data类型的对象。我怎么能用Java中的snakeyaml来做呢?
答案 0 :(得分:1)
长话短说,我无法与SnakeYaml合作,但我可以让它与YamlBeans合作。以下是YAML文档的样子(修复了上一个答案中的错误后):
-
name: XYZ
ssn: 123
-
name: ABC
ssn: 456
这是来源:
import java.io.FileNotFoundException;
import java.io.FileReader;
import com.esotericsoftware.yamlbeans.YamlException;
import com.esotericsoftware.yamlbeans.YamlReader;
public class ArraySpike
{
public static void main(String[] args) throws FileNotFoundException, YamlException
{
System.out.println("Parsing " + args[0] + " ...\n");
YamlReader reader = new YamlReader(new FileReader(args[0]));
Data[] dArray = reader.read(Data[].class);
for (Data d: dArray)
{
System.out.println("name: " + d.name);
System.out.println("ssn: " + d.ssn + "\n");
}
}
}
根据我之前的评论,我将“数据”类更改为适当的bean。
答案 1 :(得分:0)
我自己是YAML和SnakeYaml的新手,但我注意到的第一件事是你的“Class”类不是Java Bean。你需要为“name”和“ssn”制作getter和setter。我注意到的第二件事是你的班级成员的姓名和你的YAML文件中的信息不一致(“姓名”与“姓名”,“SSN”与“ssn”)。最后,YAML文档中“SSN”之前的空格将导致问题。