/** * Merge in another JSON object. * A deep merge (recursive) matches (sub) JSON objects in the existing tree and replaces all * matching entries. JsonArrays are treated like any other entry, i.e. replaced entirely. * @param other the other JSON object * @param deep if true, a deep merge is performed * @return a reference to this, so the API can be used fluently */ public JsonObject mergeIn(JsonObject other, boolean deep) { return mergeIn(other, deep ? Integer.MAX_VALUE : 1); }
/** * Merge in another JSON object. * <p> * This is the equivalent of putting all the entries of the other JSON object into this object. This is not a deep * merge, entries containing (sub) JSON objects will be replaced entirely. * @param other the other JSON object * @return a reference to this, so the API can be used fluently */ public JsonObject mergeIn(JsonObject other) { return mergeIn(other, false); }
return ((JsonObject) oldVal).mergeIn((JsonObject)newVal, depth - 1);
@Test public void testMergeInNullValue() { JsonObject obj = new JsonObject(); obj.put("key", "value"); JsonObject otherObj = new JsonObject(); otherObj.putNull("key"); obj.mergeIn(otherObj, true); assertNull(obj.getString("key", "other")); }
@Test public void testMergeIn2() { JsonObject obj1 = new JsonObject().put("foo", "bar"); JsonObject obj2 = new JsonObject().put("foo", "flurb"); obj1.mergeIn(obj2); assertEquals(1, obj1.size()); assertEquals("flurb", obj1.getString("foo")); assertEquals(1, obj2.size()); assertEquals("flurb", obj2.getString("foo")); }
@Test public void testMergeIn1() { JsonObject obj1 = new JsonObject().put("foo", "bar"); JsonObject obj2 = new JsonObject().put("eek", "flurb"); obj1.mergeIn(obj2); assertEquals(2, obj1.size()); assertEquals("bar", obj1.getString("foo")); assertEquals("flurb", obj1.getString("eek")); assertEquals(1, obj2.size()); assertEquals("flurb", obj2.getString("eek")); }
@Test public void testMergeInDepth0() { JsonObject obj1 = new JsonObject("{ \"foo\": { \"bar\": \"flurb\" }}"); JsonObject obj2 = new JsonObject("{ \"foo\": { \"bar\": \"eek\" }}"); obj1.mergeIn(obj2, 0); assertEquals(1, obj1.size()); assertEquals(1, obj1.getJsonObject("foo").size()); assertEquals("flurb", obj1.getJsonObject("foo").getString("bar")); }
@Test public void testMergeInDepth1() { JsonObject obj1 = new JsonObject("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"); JsonObject obj2 = new JsonObject("{ \"flurb\": { \"bar\": \"flurb1\" }}"); obj1.mergeIn(obj2, 1); assertEquals(2, obj1.size()); assertEquals(1, obj1.getJsonObject("flurb").size()); assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar")); }
@Test public void testMergeInFlat() { JsonObject obj1 = new JsonObject("{ \"foo\": { \"bar\": \"flurb\", \"eek\": 32 }}"); JsonObject obj2 = new JsonObject("{ \"foo\": { \"bar\": \"eek\" }}"); obj1.mergeIn(obj2, false); assertEquals(1, obj1.size()); assertEquals(1, obj1.getJsonObject("foo").size()); assertEquals("eek", obj1.getJsonObject("foo").getString("bar")); }
@Test public void testMergeInDepth2() { JsonObject obj1 = new JsonObject("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"); JsonObject obj2 = new JsonObject("{ \"flurb\": { \"bar\": \"flurb1\" }}"); obj1.mergeIn(obj2, 2); assertEquals(2, obj1.size()); assertEquals(2, obj1.getJsonObject("flurb").size()); assertEquals("foo", obj1.getJsonObject("flurb").getString("eek")); assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar")); }
dashboard.mergeIn(obj); });
/** * Merge in another JSON object. * A deep merge (recursive) matches (sub) JSON objects in the existing tree and replaces all * matching entries. JsonArrays are treated like any other entry, i.e. replaced entirely. * @param other the other JSON object * @param deep if true, a deep merge is performed * @return a reference to this, so the API can be used fluently */ public JsonObject mergeIn(JsonObject other, boolean deep) { return mergeIn(other, deep ? Integer.MAX_VALUE : 1); }
/** * Merge in another JSON object. * <p> * This is the equivalent of putting all the entries of the other JSON object into this object. This is not a deep * merge, entries containing (sub) JSON objects will be replaced entirely. * @param other the other JSON object * @return a reference to this, so the API can be used fluently */ public JsonObject mergeIn(JsonObject other) { return mergeIn(other, false); }
@Test public void testMergeInNullValue() { JsonObject obj = new JsonObject(); obj.put("key", "value"); JsonObject otherObj = new JsonObject(); otherObj.putNull("key"); obj.mergeIn(otherObj, true); assertNull(obj.getString("key", "other")); }
@Test public void testMergeIn2() { JsonObject obj1 = new JsonObject().put("foo", "bar"); JsonObject obj2 = new JsonObject().put("foo", "flurb"); obj1.mergeIn(obj2); assertEquals(1, obj1.size()); assertEquals("flurb", obj1.getString("foo")); assertEquals(1, obj2.size()); assertEquals("flurb", obj2.getString("foo")); }
@Test public void testMergeIn1() { JsonObject obj1 = new JsonObject().put("foo", "bar"); JsonObject obj2 = new JsonObject().put("eek", "flurb"); obj1.mergeIn(obj2); assertEquals(2, obj1.size()); assertEquals("bar", obj1.getString("foo")); assertEquals("flurb", obj1.getString("eek")); assertEquals(1, obj2.size()); assertEquals("flurb", obj2.getString("eek")); }
@Test public void testMergeInFlat() { JsonObject obj1 = new JsonObject("{ \"foo\": { \"bar\": \"flurb\", \"eek\": 32 }}"); JsonObject obj2 = new JsonObject("{ \"foo\": { \"bar\": \"eek\" }}"); obj1.mergeIn(obj2, false); assertEquals(1, obj1.size()); assertEquals(1, obj1.getJsonObject("foo").size()); assertEquals("eek", obj1.getJsonObject("foo").getString("bar")); }
@Test public void testMergeInDepth1() { JsonObject obj1 = new JsonObject("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"); JsonObject obj2 = new JsonObject("{ \"flurb\": { \"bar\": \"flurb1\" }}"); obj1.mergeIn(obj2, 1); assertEquals(2, obj1.size()); assertEquals(1, obj1.getJsonObject("flurb").size()); assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar")); }
@Test public void testMergeInDepth0() { JsonObject obj1 = new JsonObject("{ \"foo\": { \"bar\": \"flurb\" }}"); JsonObject obj2 = new JsonObject("{ \"foo\": { \"bar\": \"eek\" }}"); obj1.mergeIn(obj2, 0); assertEquals(1, obj1.size()); assertEquals(1, obj1.getJsonObject("foo").size()); assertEquals("flurb", obj1.getJsonObject("foo").getString("bar")); }
@Test public void testMergeInDepth2() { JsonObject obj1 = new JsonObject("{ \"foo\": \"bar\", \"flurb\": { \"eek\": \"foo\", \"bar\": \"flurb\"}}"); JsonObject obj2 = new JsonObject("{ \"flurb\": { \"bar\": \"flurb1\" }}"); obj1.mergeIn(obj2, 2); assertEquals(2, obj1.size()); assertEquals(2, obj1.getJsonObject("flurb").size()); assertEquals("foo", obj1.getJsonObject("flurb").getString("eek")); assertEquals("flurb1", obj1.getJsonObject("flurb").getString("bar")); }