【问题标题】:What is a simple way of using snakeyaml to parse this file into an object?使用snakeyaml 将此文件解析为对象的简单方法是什么?
【发布时间】:2013-01-19 22:02:56
【问题描述】:

假设我有一个需要传递的格式如下的文件

Name: XYZ
 SSN: 123

Name: ABC
 SSN: 456

假设我已经创建了以下类

Class Data{
 String name;
 int ssn;
 }

现在我需要解析上述文件,并为每个条目创建一个数据类型的对象。如何在 Java 中使用snakeyaml?

【问题讨论】:

    标签: java parsing file-io snakeyaml


    【解决方案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。

    【讨论】:

      【解决方案2】:

      我自己是 YAML 和 SnakeYaml 的新手,但我注意到的第一件事是您的“Class”类不是 Java Bean。您需要为“name”和“ssn”创建 getter 和 setter。我注意到的第二件事是您的班级成员的姓名和您的 YAML 文档中的信息不一致(“姓名”与“姓名”,“SSN”与“ssn”)。最后,YAML 文档中“SSN”之前的空格会导致问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-01
        • 2010-09-14
        • 2011-09-04
        • 2013-07-06
        • 2023-03-17
        • 1970-01-01
        • 2019-05-17
        • 2017-02-11
        相关资源
        最近更新 更多