从MultiValueMap获取值

问题描述 投票:3回答:2

我使用此代码从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

java spring-boot spring-restcontroller spring-rest
2个回答
2
投票

如果你总是只为unique_id提供一个值,你可以使用get而不是getFirst

返回给定键的第一个值

你的代码会是这样的:

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

请记住,此方法实际上返回指定键的第一个值,如果没有找到则返回null


如果您发送多个值,则需要将它们视为Collection。例如:

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

之后,您可以根据需要使用所有ID,例如,打印它们:

unique_ids.stream().forEach(System.out:println);

1
投票

MultivaluedMap是继承Map的接口,您可以看到所获得的对象是一个列表

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

然后你可以这样做并获得列表的第一个元素:

String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));
© www.soinside.com 2019 - 2024. All rights reserved.