我可以这样做:
Map<String, String> mapA = ...;
Map<String, String> mapB = mapA.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue
));
但是当我尝试这样做时:
... mapA.entrySet().stream()
.collect(JsonCollectors.toJsonObject(
JsonObject.Entry::getKey,
JsonObject.Entry::getValue
));
我明白了
不能从静态上下文中引用非静态方法
JsonObject.Entry::getKey, JsonObject.Entry::getValue
部分。
那是为什么?
答案 0 :(得分:1)
您可以使用add method of JsonObjectBuilder:
JsonObjectBuilder builder = Json.createObjectBuilder();
mapA.forEach(builder::add);
JsonObject obj = builder.build();
答案 1 :(得分:1)
javax.json.JsonObject
是Map<String,JsonValue>
的子类,因此具有putAll
方法
void putAll(Map<? extends K,? extends V> m)
因此,您只需创建JsonObject
并添加Map
JsonObject object = Json.createObjectBuilder().build();
object.putAll(mapA);
答案 2 :(得分:0)
使用org.json代替javax.json
// Create a JSON object directly from your map
JSONObject obj = new JSONObject( srcmap );
// Convert it into string
String data = obj.toString();