将MulitvaluedMap <String,String>转换为MultivaluedMap <String,Object>

时间:2019-10-08 22:35:26

标签: java hashmap type-conversion multivalue

我有一个MultivaluedMap<String, String> strMap,我想将其转换为MultivaluedMap<String, Object> objMap

我尝试在下面的帖子中探索一些路线,但似乎都没有作用。

Converting Map<String,String> to Map<String,Object>

2 个答案:

答案 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());
}