public boolean endObject() { if (stack.size() > 1 && stack.get(stack.size() - 2).isArray()) { JsonElement object = stack.pollLast(); stack.peekLast().asArray().add(object); } return true; }
public boolean endArray() { if (stack.size() > 1 && stack.get(stack.size() - 2).isArray()) { JsonElement value = stack.pollLast(); stack.peekLast().asArray().add(value); } return true; } }
public JsonElementAssert isArray() { isNotNull(); if(!actual.isArray()) { failWithMessage("should be array but was <%s>", actual.type()); } return this; }
/** * Convenient method providing a few alternate ways of extracting elements * from a JsonArray. * * @param label label * @return the first element in the array matching the label or the n-th * element if the label is an integer and the element an object or * an array. */ public JsonElement get(String label) { int i = 0; try{ for (JsonElement e : this) { if(e.isPrimitive() && e.asPrimitive().asString().equals(label)) { return e; } else if((e.isObject() || e.isArray()) && Integer.valueOf(label).equals(i)) { return e; } i++; } } catch(NumberFormatException e) { // fail gracefully return null; } // the element was not found return null; }
private Object translate(JsonElement e) { if(e.isObject()) { JsonObject o = e.asObject(); Map<String,Object> map = new LinkedHashMap<>(); o.forEach((key,value) -> { map.put(key,translate(value)); }); return map; } else if(e.isArray()) { JsonArray a = e.asArray(); List<Object> list = new ArrayList<>(); a.forEach(element -> { list.add(translate(element)); }); return list; } else { return e.asPrimitive().value(); } }
/** * 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 shouldSupportOptional() { JsonObject o = object( field("o1", Optional.of(1)), field("o2", Optional.empty()) ); o.put("o3", Optional.of(array(1,2,3))); assertThat(o.get("o1").isNumber()).isTrue(); assertThat(o.get("o2").isNull()).isTrue(); assertThat(o.get("o3").isArray()).isTrue(); }
private static void append(Element e, JsonObject o) { for(Entry<String, JsonElement> entry:o.entrySet()) { Element child; try { child = new Element(entry.getKey()); } catch (IllegalNameException exc1) { child = new Element("_" + entry.getKey()); } JsonElement value = entry.getValue(); if(value.isArray()) { append(child, value.asArray()); } else if(value.isObject()) { append(child, value.asObject()); } else { append(child, value.asPrimitive()); } e.appendChild(child); } }
private static void serialize(BsonGenerator generator, JsonObject object) throws JsonGenerationException, IOException { generator.writeStartObject(); for(Entry<String, JsonElement> entry: object.entrySet()) { generator.writeFieldName(entry.getKey()); JsonElement element = entry.getValue(); if(element.isObject()) { serialize(generator, element.asObject()); } else if(element.isArray()) { serialize(generator, element.asArray()); } else { serialize(generator, element.asPrimitive()); } } generator.writeEndObject(); }
public void shouldSerializeAndParseArray() throws IOException { JsonArray a = array(primitive(42), object(field("x",array(1,2)))); ByteArrayOutputStream bos = new ByteArrayOutputStream(); JsonJPlistSerializer.serialize(a, bos); bos.flush(); byte[] bytes = bos.toByteArray(); JsonElement e = JsonJPlistParser.parse(bytes); assertThat(e.isArray()).isEqualTo(true); } }
public static NSObject toNsObject(JsonElement e) { if(e.isArray()) { return toNsObject(e.asArray()); } else if(e.isObject()) { return toNsObject(e.asObject()); } else { return toNsObject(e.asPrimitive()); } }
public void shouldAddJsonElements() { JsonArray arr = new JsonArray(); arr.add(primitive(1),object(field("1", "2")),array(42)); assertThat(arr.size(), is(3)); assertThat(arr.get(0).isPrimitive(), is(true)); assertThat(arr.get(1).isObject(), is(true)); assertThat(arr.get(2).isArray(), is(true)); }
static Element getElement(JsonElement value, String rootName) { Element root = new Element(rootName); if(value.isArray()) { append(root, value.asArray()); } else if(value.isObject()) { append(root, value.asObject()); } else { append(root, value.asPrimitive()); } return root; } }
private static void serialize(BsonGenerator generator, JsonArray array) throws JsonGenerationException, IOException { generator.writeStartArray(); for(JsonElement element: array) { if(element.isObject()) { serialize(generator, element.asObject()); } else if(element.isArray()) { serialize(generator, element.asArray()); } else { serialize(generator, element.asPrimitive()); } } generator.writeEndArray(); }
public static void serialize(JsonElement element, OutputStream out) throws IOException { BsonFactory bsonFactory = new BsonFactory(); BsonGenerator generator = bsonFactory.createGenerator(out); if(element.isObject()) { serialize(generator, element.asObject()); } else if(element.isArray()) { serialize(generator, element.asArray()); } else { serialize(generator, element.asPrimitive()); } generator.close(); }
public static NSObject toNsObject(JsonArray a) { NSArray array = new NSArray(a.size()); int index=0; for(JsonElement v: a) { NSObject value; if(v.isObject()) { value=toNsObject(v.asObject()); } else if(v.isArray()) { value = toNsObject(v.asArray()); } else { value=toNsObject(v.asPrimitive()); } array.setValue(index++, value); } return array; }
private static void append(Element e, JsonArray p) { Element list = new Element("ol"); for(JsonElement value: p) { Element li = new Element("li"); if(value.isArray()) { append(li, value.asArray()); } else if(value.isObject()) { append(li, value.asObject()); } else { append(li, value.asPrimitive()); } list.appendChild(li); } e.appendChild(list); }
public static NSObject toNsObject(JsonObject o) { NSDictionary dict = new NSDictionary(); o.forEach((k,v) -> { if(v.isObject()) { dict.put(k, toNsObject(v.asObject())); } else if(v.isArray()) { dict.put(k, toNsObject(v.asArray())); } else { dict.put(k, toNsObject(v.asPrimitive())); } }); return dict; }