Как преобразовать строку обратно в список объектов в Java - PullRequest
0 голосов
/ 19 ноября 2018

Как преобразовать строку обратно в объект? У меня есть следующий класс:

class Test {
    String name;
    String value;
    String testing;

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", value='" + value + '\'' +
                ", testing='" + testing + '\'' +
                '}';
    }
}

class Testing {
   private List<Test> testing = new ArrayList<Test>();
   handling(testing.toString())
   public String handling(String testing) {
        // do some handling and return a string
   }
}

ArrayList testing необходимо обработать преобразованием в string, например, после этого мы получим следующую строку:

[Test{name='name1', value='value1', testing='testing1'}, Test{name='name2', value='value2', testing='testing2'}, Test{name='name3', value='value3', testing='testing3'}]

тогда как преобразовать строку обратно в список объектов Test?

Может кто-нибудь помочь с этим?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы можете создать дополнительный конструктор и вызывать их со строкой:

class Test {
    private String name;
    private String value;
    private String testing;

    Test(string objString) { 
        Pattern pattern = Pattern.compile("name=('.+'), value=('.+), testing=('.+')");
        Matcher matcher = pattern.matcher(objString);
        if (matcher.matches()) {
            name = matcher.group(1);
            value = matcher.group(2);
            testing = matcher.group(3);
        } else {
            throw new ArgumentException("Cannot parse""):
        }
    }

    @Override
    public String toString() {
        return "Test{" +
                "name='" + name + '\'' +
                ", value='" + value + '\'' +
                ", testing='" + testing + '\'' +
                '}';
    }
}

class Testing {

    doTesting(List<Test> testing) {
        List<String> testingAsString = new ArrayList<String>();

        // To string
        for (Test t : testing) {
            testingAsString.add(t.toString());
        }

        List<Test> clonedTesting = new ArrayList<Test>();
        // To Test
        for (String t : testingAsString) {
            clonedTesting.add(new Test(t));
        }

        // Here every test string is again an object of type Test
        for (Test t : clonedTesting) {
            System.out.println(t);
        }
    }  
}
0 голосов
/ 19 ноября 2018

Если вам не нужен точно этот toString шаблон, а нужно только преобразовать ваш Object во что-то читаемое человеком, а затем обратно в Object, вы можете маршал в json и анализ обратно в Object без проблем с чем-то вроде Джексона ObjectMapper. См. https://www.baeldung.com/jackson-object-mapper-tutorial для быстрого запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...