Created
February 22, 2016 07:45
-
-
Save karmanov/c87bed4e6a3d1e666ab6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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