@Override public void toJson(JsonWriter writer, @Nullable T value) throws IOException { boolean serializeNulls = writer.getSerializeNulls(); writer.setSerializeNulls(true); try { delegate.toJson(writer, value); } finally { writer.setSerializeNulls(serializeNulls); } } @Override boolean isLenient() {
@Override public void toJson(JsonWriter writer, @Nullable T value) throws IOException { boolean serializeNulls = writer.getSerializeNulls(); writer.setSerializeNulls(true); try { delegate.toJson(writer, value); } finally { writer.setSerializeNulls(serializeNulls); } } @Override boolean isLenient() {
@Override public void toJson(JsonWriter writer, SafeCalendar value) throws IOException { writer.setSerializeNulls(true); writer.beginObject(); writeValueOrNull(writer, value, "year", Calendar.YEAR); writeValueOrNull(writer, value, "month", Calendar.MONTH); writeValueOrNull(writer, value, "day", Calendar.DAY_OF_MONTH); writer.endObject(); writer.setSerializeNulls(false); }
@Test public void maintainsPreviousSerializationValue() throws Exception { JsonAdapter<Data1> adapter = moshi.adapter(Data1.class); Data1 data1 = new Data1(); JsonWriter writer1 = JsonWriter.of(new Buffer()); writer1.setSerializeNulls(true); adapter.toJson(writer1, data1); assertThat(writer1.getSerializeNulls()).isTrue(); JsonWriter writer2 = JsonWriter.of(new Buffer()); writer2.setSerializeNulls(false); adapter.toJson(writer2, data1); assertThat(writer2.getSerializeNulls()).isFalse(); }
private <C extends Collection<String>> String toJson(Type collectionType, C collection) throws IOException { JsonAdapter<C> jsonAdapter = validCsAdapter(collectionType); Buffer buffer = new Buffer(); JsonWriter jsonWriter = JsonWriter.of(buffer); jsonWriter.setSerializeNulls(true); //noinspection ConstantConditions At this point the adapter should not be null. jsonAdapter.lenient().toJson(jsonWriter, collection); return buffer.readUtf8(); }