/** * Variant of contains that checks if the array contains something that can be extracted with JsonElement get(final String label). * @param label label * @return true if the array contains the element */ public boolean contains(final String label) { return get(label) != null; }
public JsonElement first() { return get(0); }
public Optional<JsonElement> maybeGet(int index) { if(index>=size()) { // prevent index out of bounds exception return Optional.empty(); } return Optional.ofNullable(get(index)); }
public JsonElement last() { return get(size()-1); }
public JsonElementAssert at(int i) { isNotEmpty(); return new JsonElementAssert(actual.get(i)); } }
@Override public boolean equals(final Object o) { if (o == null) { return false; } if (!(o instanceof JsonArray)) { return false; } JsonArray array = (JsonArray) o; if (size() != array.size()) { return false; } for(int i=0; i<size();i++) { JsonElement e1 = get(i); JsonElement e2 = array.get(i); if(!e1.equals(e2)) { return false; } } return true; }
/** * Convert json array of arrays of double primitives to a double[][]. * @param lineString 2d JsonArray of doubles * @return a double[][] 2d array of doubles */ public static @Nonnull double[][] fromJsonJLineString(@Nonnull JsonArray lineString) { double[][] result = new double[lineString.size()][lineString.get(0).asArray().size()]; for(int i =0; i<lineString.size();i++) { JsonArray subArray = lineString.get(i).asArray(); for(int j =0; j<subArray.size();j++) { result[i][j] = subArray.get(j).asPrimitive().asDouble(); } } return result; }
/** * GeoJson specifies the order of coordinates as x,y or in geo terms longitude followed by latitude. * Most data sources stick to latitude, longitude though. This function, swaps the two for any dimension array. * * * @param array 2d array with latitude, longitude pairs * @return swapped array 2d array with longitude, latitude pairs */ public static @Nonnull JsonArray swapLatLon(@Nonnull JsonArray array) { if(array.isNotEmpty() && array.first().isArray()) { for(JsonElement e: array) { swapLatLon(e.asArray()); } } else { if(array.size() < 2) { throw new IllegalArgumentException("need at least two coordinates"); } JsonElement first = array.get(0); JsonElement second = array.get(1); array.set(0, second); array.set(1, first); } return array; }
public void shouldConcatenateShortHand() { String hocon="path : [ \"/bin\" ]\n" + "path += \"/usr/bin\""; JsonObject parsed = parser.parseObject(hocon); assertThat(parsed.getArray("path").get(0).asString()).isEqualTo("/bin"); assertThat(parsed.getArray("path").get(1).asString()).isEqualTo("/usr/bin"); }
public void shouldConcatenate() { String hocon="path : [ \"/bin\" ]\n" + "path : ${path} [ \"/usr/bin\" ]"; JsonObject parsed = parser.parseObject(hocon); assertThat(parsed.getArray("path").get(0).asString()).isEqualTo("/bin"); assertThat(parsed.getArray("path").get(1).asString()).isEqualTo("/usr/bin"); }
protected void flatten(@Nonnull JsonObject root, @Nonnull String path, @Nonnull String separator, JsonElement element) { JsonType type = element.type(); switch (type) { case array: JsonArray arr = element.asArray(); for(int i=0; i<arr.size();i++) { if(path.length()>0) { flatten(root,path+separator+i,separator,arr.get(i)); } else { flatten(root,""+i,separator,arr.get(i)); } } break; case object: if(path.length()>0) { element.asObject().forEach((key, value) -> flatten(root,path+separator+key,separator,value)); } else { element.asObject().forEach((key, value) -> flatten(root,key,separator,value)); } break; default: root.put(path, element); break; } }
public void shouldAllowJsonNullValues() { JsonArray arr = array(null, nullValue()); assertThat(arr.get(0), is((JsonElement)nullValue())); }
public void shouldIterateOverArrays() { JsonArray twodarray = array(); twodarray.add(array(42,42)); for(JsonArray arr: twodarray.arrays()) { assertThat(arr.get(0).asInt(), is(42)); } }
public void shouldAddFields() { JsonObject object = object(field("meaningoflife", 42), field("foo", primitive("bar")), field("list",array("stuff"))); assertThat(object.getInt("meaningoflife"), is(42)); assertThat(object.getString("foo"), is("bar")); assertThat(object.getArray("list").get(0).asString(), is("stuff")); }
public void shouldGetByLabel() { JsonElement element = array("foo", "bar").get("bar"); AssertJUnit.assertNotNull(element); AssertJUnit.assertEquals("bar", element.asPrimitive().asString()); }
public void shouldReturnNull() { JsonElement element = array(primitive("foo"), object().put("bar", true).get()).get("x"); AssertJUnit.assertNull(element); }
public void shouldGetObjectByIndex() { JsonElement element = array(primitive("foo"), object().put("bar", true).get()).get("1"); AssertJUnit.assertNotNull(element); AssertJUnit.assertTrue(element.isObject()); }