我有一个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)) {};
}
}
关于java - MultivaluedMap<String, String> 到 MultivaluedMap<String, Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58294852/