/** * @param key key * @param e value * @return the builder */ public @Nonnull JsonBuilder put(String key, JsonElement e) { object.put(key, e); return this; }
/** * @param key key * @param e value * @return the builder */ public @Nonnull JsonBuilder put(String key, JsonBuilder e) { object.put(key, e); return this; }
/** * Add a boolean value to the object. * * @param key key * @param b value * @return the builder */ public @Nonnull JsonBuilder put(String key, boolean b) { object.put(key, primitive(b)); return this; }
@SuppressWarnings("rawtypes") public JsonObject(@Nonnull Map existing) { Iterator iterator = existing.entrySet().iterator(); while (iterator.hasNext()) { Entry entry = (Entry) iterator.next(); put(entry.getKey().toString(), fromObject(entry.getValue())); } }
/** * Add a number to the object. * * @param key key * @param n value * @return the builder */ public @Nonnull JsonBuilder put(String key, Number n) { object.put(key, primitive(n)); return this; }
/** * Add a string value to the object. * * @param key key * @param s value * @return the builder */ public @Nonnull JsonBuilder put(String key, String s) { object.put(key, primitive(s)); return this; }
@JsonAnySetter default JsonElement put(@Nonnull String key, Object value) { verifyMutable(); return getJsonObject().put(key, value); }
private static JsonObject convert(Map<?,?> m) { JsonObject object = new JsonObject(); m.forEach((k,v) -> { object.put(k.toString(),fromObject(v)); }); return object; }
@SuppressWarnings("unchecked") @Override public JsonObject deepClone() { JsonObject object = createNew(); Set<java.util.Map.Entry<String, JsonElement>> es = entrySet(); for (Entry<String, JsonElement> entry : es) { JsonElement e = entry.getValue().deepClone(); object.put(entry.getKey(), e); } return object; }
@Override public JsonObject immutableClone() { JsonObject object = createNew(); Set<java.util.Map.Entry<String, JsonElement>> es = entrySet(); for (Entry<String, JsonElement> entry : es) { JsonElement e = entry.getValue().immutableClone(); object.put(entry.getKey(), e); } object.simpleMap.makeImmutable(); return object; }
@Test(dataProvider="objectConstructors") public void shouldCreateObject(Supplier<JsonObject> supplier) { JsonObject object = supplier.get(); JsonObject createdObject = object.getOrCreateObject("a","b","c"); createdObject.put("foo", "bar"); Assert.assertTrue(object.getString("a","b","c", "foo").equals("bar"), "object should have been added"); }
@Test(dataProvider="objectConstructors") public void shouldPutBuilder(Supplier<JsonObject> supplier) { JsonBuilder builder = object().put("foo", "bar"); JsonObject object1 = object().put("foobar",builder).get(); JsonObject object2 = supplier.get(); object2.put("foobar", builder); JsonObject object3 = supplier.get(); object3.put("foobar", fromObject(builder)); assertThat(object1, is(object2)); assertThat(object1, is(object3)); assertThat(object1.toString(), is("{\"foobar\":{\"foo\":\"bar\"}}")); }
public void shouldPutJsonDataObject() { JsonDataObject jdo = new JsonDataObject() { private static final long serialVersionUID = 1L; @Override public JsonObject getJsonObject() { return object(field("foo","bar")); } }; JsonObject o = object(field("x",42)); o.put("jdo", jdo); assertThat(o.getString("jdo","foo")).isEqualTo("bar"); }
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(); }
@Test(expectedExceptions=IllegalStateException.class) public void shouldNotAllowMutations() { JsonObject object = object(field("f", array(1,1,1,1,1))); JsonObject clone = object.immutableClone(); assertThat(clone).isEqualTo(object); clone.put("x", "y"); }
public void shouldNotRevertToJsonObjectWhenCloning() { JsonObject jsonObject = new MapBasedJsonObject(); for(int i=0;i<1000;i++) { jsonObject.put("key_"+i, i); } assertThat(jsonObject.deepClone()).isInstanceOf(MapBasedJsonObject.class); assertThat(jsonObject.immutableClone()).isInstanceOf(MapBasedJsonObject.class); } }
@Test(expectedExceptions=IllegalStateException.class) public void shouldNotAllowMutationsOnObjectInObject() { JsonObject object = object(field("f", object(field("1",1)))); JsonObject clone = object.immutableClone(); assertThat(clone).isEqualTo(object); clone.getObject("f").put("2",2); }
public void shouldPreserveNestedStructureWhenUpgradingToMapBasedJsonObject() { JsonObject nested=new JsonObject(); for(int i=0;i<500;i++) { nested.put("key_"+i, i); } JsonObject o = object(field("nested",nested)); String input=o.toString(); JsonObject parsed = parser.parseObject(input); assertThat(parsed).isEqualTo(o); }
public void shouldDoDeepClone() { JsonObject o = object().put("1", 42).put("2", "Hello world").get(); JsonObject cloneOfO = o.deepClone(); Assert.assertTrue(o.equals(cloneOfO)); o.remove("1"); Assert.assertFalse(o.equals(cloneOfO)); o.put("1", cloneOfO); Object clone = o.clone(); Assert.assertTrue(o.equals(clone)); cloneOfO.remove("2"); Assert.assertFalse(o.equals(clone)); }