@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; }
void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { // when deserializing, parse the json string try { int length = in.readInt(); byte[] buf = new byte[length]; in.readFully(buf); if (parser == null) { // create it lazily, static so won't increase object size parser = new JsonParser(); } JsonElement o = parser.parse(new String(buf, StandardCharsets.UTF_8)); Field f = getClass().getDeclaredField("intMap"); f.setAccessible(true); f.set(this, new SimpleIntKeyMap<>()); for (Entry<String, JsonElement> e : o.asObject().entrySet()) { put(e.getKey(), e.getValue()); } } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { throw new IllegalStateException(e); } } }
@Override void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { // when deserializing, parse the json string try { int length = in.readInt(); byte[] buf = new byte[length]; in.readFully(buf); if (parser == null) { // create it lazily, static so won't increase object size parser = new JsonParser(); } JsonElement o = parser.parse(new String(buf, StandardCharsets.UTF_8)); Field f = getClass().getDeclaredField("intMap"); f.setAccessible(true); f.set(this, new SimpleIntKeyMap<>()); for (Entry<String, JsonElement> e : o.asObject().entrySet()) { put(e.getKey(), e.getValue()); } } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { throw new IllegalStateException(e); } } }
bw.write('{'); newline(bw, indent+1, pretty); Iterator<Entry<String, JsonElement>> iterator = json.asObject().entrySet().iterator(); while (iterator.hasNext()) { Entry<String, JsonElement> entry = iterator.next();
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(); }