Получить значения из MultiValueMap - PullRequest
3 голосов
/ 21 апреля 2019

Я использую этот код для получения значений из HTTP-запроса:

@PostMapping(consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, value = "/v1/notification")
  public ResponseEntity<String> handleNotifications(@RequestBody MultiValueMap<String, Object> keyValuePairs) {

    LOGGER.debug("handleFormMessage");
    LOGGER.debug("keyValuePairs: {}", keyValuePairs);

    String unique_id = String.valueOf(keyValuePairs.get("unique_id"));

    System.out.println("!!!!!!!!!!!!!! ! unique_id " + unique_id);
}

Но я получаю это значение: !!!!!!!!!!!!!! ! unique_id [24q376c3ts2kh3o3220rry322dfe2k7y].

Есть ли способ удалить [] изСтрока без классического String result = str.substring(0, index) + str.substring(index+1);?

Есть ли способ получить значения?

Я использую это для публикации значений:

enter image description here

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

Если вы всегда предоставляете только одно значение для unique_id, вместо get вы можете использовать getFirst, который

Возвращает первое значение для данного ключа

Ваш код будет выглядеть следующим образом:

String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));

Помните, этот метод фактически возвращает первое значение для указанного ключа, или null если ничего не найдено.


Если вы отправляете более одного значения , вам нужно рассматривать их как Коллекция .Например:

Collection<String> unique_ids = keyValuePairs.get("unique_id");

После этого вы можете делать со всеми идентификаторами, как хотите, например, распечатать их:

unique_ids.stream().forEach(System.out:println);
1 голос
/ 21 апреля 2019

MultivaluedMap - это интерфейс, наследующий Map, и то, как вы видите объект, который вы получаете, - это список

public interface MultivaluedMap<K,V> extends Map<K,List<V>>

Тогда вы можете сделать это и получить первый элемент списка:

String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));
...