Как преобразовать строку типа "[" 412 "," 122 "]" в ArrayList - PullRequest
1 голос
/ 17 марта 2020

Я получаю список идентификаторов в службе, отформатированной в Arring Stringified, например "[" 111 "," 232 "...]".

Я использую:

ArrayList<String> ids = new ArrayList<String>(Arrays.asList(strListIds.split("[,\\s]+")));

, но это не удаляет первый [и последний] строки. Я могу удалить эти символы вручную, но я спрашиваю это, чтобы знать, если есть правильный способ сделать это.

Спасибо

Ответы [ 3 ]

2 голосов
/ 17 марта 2020

Вы ищете:

List<String> ids = new ArrayList<>(
        Arrays.asList(
                strListIds.substring(1, strListIds.length() - 1).split(",\\s")
        )
);// ["412","122"]

Если вы не сохраните "", то вам нужно заменить их до разделения:

.replace("\"", "")

Но лучше бы я использовал:

ObjectMapper mapper = new ObjectMapper();
String[] arr = mapper.readValue(strListIds, String[].class);
List<String> ids = new ArrayList<>(Arrays.asList(arr));// [412,122]

Бонусное решение с использованием регулярных выражений:

List<String> ids = Pattern.compile("\"(.*?)\"")
        .matcher(strListIds)
        .results()
        .map(m -> m.group(1))
        .collect(Collectors.toList());
0 голосов
/ 17 марта 2020

Я не уверен, что вы пробовали это, но только для вашей помощи вы можете попробовать ObjectMapper, который может помочь вам преобразовать значения в желаемый тип. В частности, есть 2 метода, которые вы можете попробовать, особенно 2-й. 1) ObjectMapper.readValue (data, List.class) 2) ObjectMapper.convertValue (data, new TypeRefence> () {});

Здесь ссылка для более подробного объяснения https://www.baeldung.com/jackson-object-mapper-tutorial

Надеюсь, это поможет

0 голосов
/ 17 марта 2020

Вы можете сделать это используя потоки:

List<String> ids =Arrays.stream(strListIds.substring(2, strListIds.length()-2).split(",")).map(value-> value.substring(1, value.length()-1)).collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...