Каков простой способ использования змейки для разбора этого файла в объект?

Предположим, что у меня есть файл следующего формата, который необходимо передать

Name: XYZ
 SSN: 123

Name: ABC
 SSN: 456

Предположим, я создал следующий класс

Class Data{
 String name;
 int ssn;
 }

Теперь мне нужно разобрать вышеуказанный файл и для каждой записи создать объект данных типа. Как я могу сделать это, используя змею в Java?


person ExceptionHandler    schedule 19.01.2013    source источник


Ответы (2)


Короче говоря, я не мог заставить это работать со 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");
        }

    }
}

Согласно моему предыдущему комментарию, я изменил класс «Данные» на правильный компонент.

person gilbertpilz    schedule 26.04.2013

Я сам новичок в YAML и SnakeYaml, но первое, что я замечаю, это то, что ваш класс "Class" не является Java Bean. Вам нужно сделать геттеры и сеттеры для "name" и "ssn". Второе, что я заметил, это то, что имена членов вашего класса и информация в вашем документе YAML не согласуются («Имя» против «имени», «SSN» против «ssn»). Наконец, пробел перед «SSN» в вашем документе YAML вызовет проблемы.

person gilbertpilz    schedule 25.04.2013