我有一个MultivaluedMap<String, String> strMap
,我想将其转换为MultivaluedMap<String, Object> objMap
。
我尝试在下面的帖子中探索一些路线,但似乎都没有作用。
答案 0 :(得分:0)
今天,我遇到了同样的问题,经过大量搜索,我提出了以下解决方案:
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;
}
}
或者,如果您使用的是番石榴,则可以使用以下代码:
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)) {};
}
}
答案 1 :(得分:0)
遇到同样的情况,工作解决方案-
MultiValuedMap<String, String> multivaluedMap = //store the value here
Collection<Map.Entry<String, String>> entries = multivaluedMap.entries();
for(Map.Entry<String, String> ent : multivaluedMap.entries()){
entityList.add(ent.getKey()+ " " + ent.getValue());
}