} else keyEncoder.write(writer, e.getKey()); writer.writeByte(JsonWriter.SEMI); valueEncoder.write(writer, e.getValue()); writer.writeByte(JsonWriter.SEMI); if (valueEncoder != null) { valueEncoder.write(writer, e.getValue()); } else { if (e.getValue() == null) { throw new SerializationException("Unable to find writer for " + lastValueClass); lastValueEncoder.write(writer, e.getValue());
T item = list.get(0); if (item != null) { encoder.write(this, item); } else { writeNull(); item = list.get(i); if (item != null) { encoder.write(this, item); } else { writeNull(); T item = iter.next(); if (item != null) { encoder.write(this, item); } else { writeNull(); item = iter.next(); if (item != null) { encoder.write(this, item); } else { writeNull();
if (value instanceof ArrayList) { final ArrayList<E> list = (ArrayList<E>)value; encoder.write(writer, list.get(0)); for(int i = 1; i < list.size(); i++) { writer.writeByte(JsonWriter.COMMA); encoder.write(writer, list.get(i)); pastFirst = true; encoder.write(writer, e); lastEncoder.write(writer, e);
public <T> void writeQuoted(final JsonWriter.WriteObject<T> keyWriter, final T key) { if (key instanceof Double) { final double value = (Double) key; if (Double.isNaN(value)) writeAscii("\"NaN\""); else if (value == Double.POSITIVE_INFINITY) writeAscii("\"Infinity\""); else if (value == Double.NEGATIVE_INFINITY) writeAscii("\"-Infinity\""); else { writeByte(QUOTE); NumberConverter.serialize(value, this); writeByte(QUOTE); } } else if (key instanceof Float) { final float value = (Float) key; if (Float.isNaN(value)) writeAscii("\"NaN\""); else if (value == Float.POSITIVE_INFINITY) writeAscii("\"Infinity\""); else if (value == Float.NEGATIVE_INFINITY) writeAscii("\"-Infinity\""); else { writeByte(QUOTE); NumberConverter.serialize(value, this); writeByte(QUOTE); } } else if (key instanceof Number) { writeByte(QUOTE); keyWriter.write(this, key); writeByte(QUOTE); } else { keyWriter.write(this, key); } }
@Override public void write(final JsonWriter writer, @Nullable final T value) { if (type != null && encoder == null) { encoder = json.tryFindWriter(type); if (encoder == null) { throw new SerializationException("Unable to find writer for " + type); } } final R attr = read.apply(value); if (attr == null) { writer.writeNull(); } else if (type == null) { final JsonWriter.WriteObject tmp = json.tryFindWriter(attr.getClass()); if (tmp == null) { throw new SerializationException("Unable to find writer for " + attr.getClass()); } tmp.write(writer, attr); } else { encoder.write(writer, attr); } } }
public final boolean writeContentMinimal(final JsonWriter writer, @Nullable final T instance) { if (isEmpty) return false; final int originalPos = writer.size(); final long originalFlushed = writer.flushed(); int pos = originalPos; long flushed = originalFlushed; encoders[0].write(writer, instance); if (writer.size() != pos || writer.flushed() != flushed) { writer.writeByte(JsonWriter.COMMA); pos = writer.size(); flushed = writer.flushed(); } for (int i = 1; i < encoders.length; i++) { encoders[i].write(writer, instance); if (writer.size() != pos || writer.flushed() != flushed) { writer.writeByte(JsonWriter.COMMA); pos = writer.size(); flushed = writer.flushed(); } } return originalPos != pos || originalFlushed != flushed; } }
public <K, V> void serialize(@Nullable final Map<K, V> map, final WriteObject<K> keyEncoder, final WriteObject<V> valueEncoder) { if (map == null) { writeNull(); return; } writeByte(OBJECT_START); final int size = map.size(); if (size > 0) { final Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator(); Map.Entry<K, V> kv = iterator.next(); writeQuoted(keyEncoder, kv.getKey()); writeByte(SEMI); valueEncoder.write(this, kv.getValue()); for (int i = 1; i < size; i++) { writeByte(COMMA); kv = iterator.next(); writeQuoted(keyEncoder, kv.getKey()); writeByte(SEMI); valueEncoder.write(this, kv.getValue()); } } writeByte(OBJECT_END); }
@Override public void write(final JsonWriter writer, @Nullable final Object value) { if (resolvedWriter == null) { if (checkSignatureNotFound()) { final JsonWriter.WriteObject tmp = json.tryFindWriter(type); if (tmp == null || tmp == this) { throw new SerializationException("Unable to find writer for " + type); } resolvedWriter = tmp; } } resolvedWriter.write(writer, value); } }
@Override public void write(final JsonWriter writer, @Nullable final Object value) { if (resolvedWriter == null) { if (checkSignatureNotFound()) { final JsonWriter.WriteObject tmp = json.tryFindWriter(type); if (tmp == null || tmp == this) { throw new SerializationException("Unable to find writer for " + type); } resolvedWriter = tmp; } } resolvedWriter.write(writer, value); } }
@Override public void write(JsonWriter writer, @Nullable Optional<T> value) { if (value == null || !value.isPresent()) writer.writeNull(); else if (encoder != null) encoder.write(writer, value.get()); else { final T unpacked = value.get(); final JsonWriter.WriteObject jw = json.tryFindWriter(unpacked.getClass()); if (jw == null) { throw new SerializationException("Unable to find writer for " + unpacked.getClass()); } jw.write(writer, unpacked); } } }
@Override public void write(final JsonWriter writer, @Nullable final Object value) { if (encoder == null) { if (checkSignatureNotFound()) { final JsonWriter.WriteObject tmp = json.tryFindWriter(type); if (tmp == null || tmp == this) { throw new SerializationException("Unable to find writer for " + type); } encoder = tmp; } } encoder.write(writer, value); } }
@Override public void write(final JsonWriter writer, @Nullable final T value) { final R attr = read.apply(value); writer.writeAscii(quotedName); encoder.write(writer, attr); } }