java - 多值映射到多值映射
问题描述
我有一个MultivaluedMap<String, String> strMap
我想转换为MultivaluedMap<String, Object> objMap
.
我尝试在下面的帖子中探索一些路线,但它们似乎都不起作用。
解决方案
我今天也遇到了同样的问题,经过大量搜索,我想出了以下解决方案:
public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
if (headers == null) {
return null;
} else {
MultivaluedMap<String, Object> map = new MultivaluedHashMap<>();
for (Map.Entry<String, List<String>> entry : headers.entrySet()) {
if (entry.getValue() != null) {
map.addAll(entry.getKey(), new LinkedList<Object>(entry.getValue()));
}
}
return map;
}
}
或者,如果您使用的是 Guava,那么您可以使用以下代码:
public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
if (headers == null) {
return null;
} else {
return new AbstractMultivaluedMap<String, Object>(Maps.transformValues(headers, new Function<List<String>, List<Object>>() {
@Override
public @Nullable List<Object> apply(@Nullable List<String> strings) {
if (strings != null) {
return new LinkedList<>(strings);
} else {
return null;
}
}
})) {};
}
}
或者,如果您使用的是 jersey 客户端 glassfish,那么您可以使用以下内容:
public static MultivaluedMap<String, Object> asObjectHeaders(MultivaluedMap<String, String> headers) {
if (headers == null) {
return null;
} else {
return new AbstractMultivaluedMap<String, Object>(Views.mapView(headers, LinkedList::new)) {};
}
}
推荐阅读
- rabbitmq - 在rabbitMQ失败时重试/重新连接消费者
- python - 如何在 Pandas 数据框中应用自加入
- wordpress - 如何在产品页面中隐藏 Dokan 供应商信息?
- regex - 如何使用 sed 替换行首的文本?
- python - Python - 如何将 CSV 转换为 XLSX?
- javascript - 在 SurveyJs 中创建 Google 地图小部件
- security - 如何使用不透明的访问令牌处理多个 IDP
- postgresql - 仅数据库 使用条件运行总计
- coldfusion - 在 cfscript 中使用 Valuelist 不起作用
- project - 谁能告诉我为什么在 Hacktoberfest2021 会发生这种情况