JsonHelper.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package org.leumasjaffe.json;
  2. import java.util.HashMap;
  3. import java.util.HashSet;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Set;
  7. import java.util.function.BiFunction;
  8. import java.util.function.Function;
  9. import java.util.stream.Collectors;
  10. import java.util.stream.StreamSupport;
  11. import com.fasterxml.jackson.databind.JsonNode;
  12. import lombok.experimental.UtilityClass;
  13. @UtilityClass
  14. public class JsonHelper {
  15. public List<JsonNode> toArray(final JsonNode array) {
  16. return StreamSupport.stream(array.spliterator(), false).collect(Collectors.toList());
  17. }
  18. public <T> List<T> toArray(final JsonNode array, Function<JsonNode, T> transform) {
  19. return StreamSupport.stream(array.spliterator(), false).map(transform).collect(Collectors.toList());
  20. }
  21. public Set<String> fieldNames(final JsonNode object) {
  22. Set<String> rval = new HashSet<>();
  23. object.fieldNames().forEachRemaining(rval::add);
  24. return rval;
  25. }
  26. public <T> Set<T> fieldNames(final JsonNode object, Function<String, T> transform) {
  27. Set<T> rval = new HashSet<>();
  28. object.fieldNames().forEachRemaining(s -> rval.add(transform.apply(s)));
  29. return rval;
  30. }
  31. public Map<String, JsonNode> fields(final JsonNode object) {
  32. Map<String, JsonNode> rval = new HashMap<>();
  33. object.fields().forEachRemaining(pair -> rval.put(pair.getKey(), pair.getValue()));
  34. return rval;
  35. }
  36. public <T> Map<String, T> fields(final JsonNode object, Function<JsonNode, T> transform) {
  37. Map<String, T> rval = new HashMap<>();
  38. object.fields().forEachRemaining(pair -> rval.put(pair.getKey(), transform.apply(pair.getValue())));
  39. return rval;
  40. }
  41. public <T> Map<String, T> fields(final JsonNode object, BiFunction<String, JsonNode, T> transform) {
  42. Map<String, T> rval = new HashMap<>();
  43. object.fields().forEachRemaining(pair -> rval.put(pair.getKey(),
  44. transform.apply(pair.getKey(), pair.getValue())));
  45. return rval;
  46. }
  47. }