java - 用 List 转换对象字段到 MultiValueMap
问题描述
我正在尝试将系统与Stripe Payments 集成,他们的 API 需要接收x-url-form-encoded
而不是在 Stripe Payments 平台上执行请求之前,我会使用所需的信息来处理数据。json
x-url-form-encoded
基本上我需要的是将其字段上具有列表的复杂对象转换为 MultValueMap。如果有兴趣,下面列出了完整的问题。
一个常见的 curl 看起来像:
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_your_key: \
-d success_url="https://example.com/success" \
-d cancel_url="https://example.com/cancel" \
-d "payment_method_types[0]"=card \
-d "line_items[0][price]"=price_H5ggYwtDq4fbrJ \
-d "line_items[0][quantity]"=2 \
-d mode=payment
我的对象看起来像:
String succes_url;
String cancel_url;
String mode;
List<LineItems> line_items;
主要问题是当我尝试转换List<LineItems>...
转换如下所示:
Map<String, String > objectToSend = objectMapper.convertValue(request, new TypeReference<>() {});
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
parameters.setAll(objectToSend);
我正在尝试执行请求,例如:
return webClient.post()
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.body(BodyInserters.fromFormData(parameters))
.retrieve().bodyToMono(String.class)
.onErrorMap(e -> new RuntimeException(e.getMessage()))
.block();
还有另一种方法可以用来执行x-url-encoded
请求,而不必“手动”用信息填充地图?
解决方案
推荐阅读
- firebase - 我的 OTP 在调试 apk 中使用 android 在 firebase 中运行良好,但在发布时无法运行
- c# - 是否可以参数化 QueueTrigger 名称?
- javascript - 使用 Vue 过滤 JSON 响应
- c - 扫描到二维数组,然后将其传递给函数 - C
- jolie - 如何在 Jolie 中创建随机索引
- javascript - 未知的自定义元素和指令
- json - 如何将变量(&id)从一个 api 传递到另一个 api 以获取相应的数据?
- ocr - 如何使用 Google Cloud Vision API 读取一列文本
- fabric - 在结构中提示密码时跳过主机
- django - 在 Django 模型中使用属性值作为选择