Как преобразовать карту в javax.json.JsonObject? - PullRequest
0 голосов
/ 22 сентября 2019

Я могу сделать это:

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.

Почему это так?

Ответы [ 3 ]

1 голос
/ 22 сентября 2019

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);
1 голос
/ 22 сентября 2019

Вы можете использовать метод добавления JsonObjectBuilder :

JsonObjectBuilder builder = Json.createObjectBuilder();
mapA.forEach(builder::add);
JsonObject obj = builder.build();
0 голосов
/ 22 сентября 2019

Вместо javax.json используйте org.json

// Create a JSON object directly from your map
JSONObject obj = new JSONObject( srcmap );
// Convert it into string
String data = obj.toString();
...