假设我有一个需要传递的格式如下的文件
Name: XYZ
SSN: 123
Name: ABC
SSN: 456
假设我已经创建了以下类
Class Data{
String name;
int ssn;
}
现在我需要解析上面的文件,并且对于每个条目,我需要创建一个数据类型的对象。如何在 Java 中使用snakeyaml?
长话短说,我无法让它与 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。
我自己是 YAML 和 SnakeYaml 的新手,但我注意到的第一件事是您的“类”类不是 Java Bean。您需要为“name”和“ssn”创建 getter 和 setter。我注意到的第二件事是您的班级成员的姓名和您的 YAML 文档中的信息不一致(“姓名”与“姓名”,“SSN”与“ssn”)。最后,YAML 文档中“SSN”之前的空格会导致问题。