Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save karmanov/c87bed4e6a3d1e666ab6 to your computer and use it in GitHub Desktop.
Save karmanov/c87bed4e6a3d1e666ab6 to your computer and use it in GitHub Desktop.
With a custom Collector:
import java.util.Map;
import java.util.stream.Collector;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
public interface JsonCollectors {
public static <T> Collector<Map.Entry<T, T>, ?, JsonObjectBuilder> toJsonBuilder() {
return Collector.of(Json::createObjectBuilder, (t, u) -> {
t.add(String.valueOf(String.valueOf(u.getKey())), String.valueOf(u.getValue()));
}, JsonCollectors::merge);
}
static JsonObjectBuilder merge(JsonObjectBuilder left, JsonObjectBuilder right) {
JsonObjectBuilder retVal = Json.createObjectBuilder();
JsonObject leftObject = left.build();
JsonObject rightObject = right.build();
leftObject.keySet().stream().forEach((key) -> retVal.add(key, leftObject.get(key)));
rightObject.keySet().stream().forEach((key) -> retVal.add(key, rightObject.get(key)));
return retVal;
}
}
...a Map<String, String> can be easily converted into a JsonObject:
public JsonObject environmentVariables() {
Map<String, String> environment = System.getenv();
return environment.entrySet().
stream().
collect(JsonCollectors.toJsonBuilder()).
build();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment