@Test public void propagateGsonAttributes() { Gson gson = new GsonBuilder() .serializeNulls() .disableHtmlEscaping() .setPrettyPrinting() .create(); GsonOptions options = new GsonOptions(gson, true); JsonReader reader = new JsonReader(new StringReader("")); options.setReaderOptions(reader); check(reader.isLenient()); JsonWriter writer = new JsonWriter(new StringWriter()); options.setWriterOptions(writer); check(writer.isLenient()); check(!writer.isHtmlSafe()); check(writer.getSerializeNulls()); // checks pretty printing check(gson.toJson(Collections.singletonMap("k", "v"))).is("{\n \"k\": \"v\"\n}"); } }
/** * Writes the JSON for {@code jsonElement} to {@code writer}. * @throws JsonIOException if there was a problem writing to the writer */ public void toJson(JsonElement jsonElement, JsonWriter writer) throws JsonIOException { boolean oldLenient = writer.isLenient(); writer.setLenient(true); boolean oldHtmlSafe = writer.isHtmlSafe(); writer.setHtmlSafe(htmlSafe); boolean oldSerializeNulls = writer.getSerializeNulls(); writer.setSerializeNulls(serializeNulls); try { Streams.write(jsonElement, writer); } catch (IOException e) { throw new JsonIOException(e); } catch (AssertionError e) { throw new AssertionError("AssertionError (GSON " + GsonBuildConfig.VERSION + "): " + e.getMessage(), e); } finally { writer.setLenient(oldLenient); writer.setHtmlSafe(oldHtmlSafe); writer.setSerializeNulls(oldSerializeNulls); } }
/** * Writes the JSON representation of {@code src} of type {@code typeOfSrc} to * {@code writer}. * @throws JsonIOException if there was a problem writing to the writer */ @SuppressWarnings("unchecked") public void toJson(Object src, Type typeOfSrc, JsonWriter writer) throws JsonIOException { TypeAdapter<?> adapter = getAdapter(TypeToken.get(typeOfSrc)); boolean oldLenient = writer.isLenient(); writer.setLenient(true); boolean oldHtmlSafe = writer.isHtmlSafe(); writer.setHtmlSafe(htmlSafe); boolean oldSerializeNulls = writer.getSerializeNulls(); writer.setSerializeNulls(serializeNulls); try { ((TypeAdapter<Object>) adapter).write(writer, src); } catch (IOException e) { throw new JsonIOException(e); } catch (AssertionError e) { throw new AssertionError("AssertionError (GSON " + GsonBuildConfig.VERSION + "): " + e.getMessage(), e); } finally { writer.setLenient(oldLenient); writer.setHtmlSafe(oldHtmlSafe); writer.setSerializeNulls(oldSerializeNulls); } }
@Override public void write(JsonWriter out, JsonStringWrapper value) throws IOException { if (value == null && out.getSerializeNulls()) { out.nullValue(); } else if (value != null) { Streams.write(new JsonParser().parse(value.getJsonString()), out); } }
protected void writeProcessId(final JsonWriter out, final Integer value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
protected void writeRootUri(final JsonWriter out, final String value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
protected void writeVersion(final JsonWriter out, final Integer value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
protected void writeProcessId(final JsonWriter out, final Integer value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
protected void writeVersion(final JsonWriter out, final Integer value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
protected void writeRootUri(final JsonWriter out, final String value) throws IOException { if ((value == null)) { final boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); } else { out.value(value); } }
@Override public void write(JsonWriter out, FieldDataType value) throws IOException { // Ignore the value: fielddata is not supported on ES2 boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls( false ); out.nullValue(); out.setSerializeNulls( previousSerializeNulls ); }
/** * Use this method to write a {@code null} value even if the JSON writer is set to not serialize {@code null}. */ protected void writeNullValue(JsonWriter out) throws IOException { boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); }
/** * Use this method to write a {@code null} value even if the JSON writer is set to not serialize {@code null}. */ protected void writeNullValue(JsonWriter out) throws IOException { boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(previousSerializeNulls); }
@Override public void write(JsonWriter out, NormsType value) throws IOException { // Ignore the value: we don't support norms on ES2 boolean previousSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls( false ); out.nullValue(); out.setSerializeNulls( previousSerializeNulls ); }
public void write(JsonWriter out, T value) throws IOException { boolean serializeNulls = out.getSerializeNulls(); if (!serializeNulls) { // force null serialization out.setSerializeNulls(true); } delegate.write(out, value); if (!serializeNulls) { // reset out.setSerializeNulls(false); } } public T read(JsonReader in) throws IOException {
@Override @SuppressWarnings({"unchecked", "rawtypes"}) public void write(JsonWriter out, T value) throws IOException { RequiredField requiredField = (RequiredField) value; if (requiredField == null || !requiredField.isPresent()) { boolean oldSerializeNulls = out.getSerializeNulls(); out.setSerializeNulls(true); out.nullValue(); out.setSerializeNulls(oldSerializeNulls); } else { delegateAdapter.write(out, requiredField.get()); } }
@Override public void write(JsonWriter jsonWriter, L value) throws IOException { Writer writer = getWriter(jsonWriter); boolean serializeNulls = jsonWriter.getSerializeNulls(); try { // we are using an implementation hack which depends on replacing null with the raw json // supplied as a parameter. In this case, we must ensure we indeed serialize nulls. NullReplacingWriter nullReplacingWriter = new NullReplacingWriter(writer, toString(value)); setWriter(jsonWriter, nullReplacingWriter); jsonWriter.setSerializeNulls(true); jsonWriter.nullValue(); } finally { setWriter(jsonWriter, writer); jsonWriter.setSerializeNulls(serializeNulls); } }
@Override public void write(JsonWriter jsonWriter, L value) throws IOException { Writer writer = getWriter(jsonWriter); boolean serializeNulls = jsonWriter.getSerializeNulls(); try { // we are using an implementation hack which depends on replacing null with the raw json // supplied as a parameter. In this case, we must ensure we indeed serialize nulls. NullReplacingWriter nullReplacingWriter = new NullReplacingWriter(writer, toString(value)); setWriter(jsonWriter, nullReplacingWriter); jsonWriter.setSerializeNulls(true); jsonWriter.nullValue(); } finally { setWriter(jsonWriter, writer); jsonWriter.setSerializeNulls(serializeNulls); } }
@Override public void write(JsonWriter jsonWriter, L value) throws IOException { Writer writer = getWriter(jsonWriter); boolean serializeNulls = jsonWriter.getSerializeNulls(); try { // we are using an implementation hack which depends on replacing null with the raw json // supplied as a parameter. In this case, we must ensure we indeed serialize nulls. NullReplacingWriter nullReplacingWriter = new NullReplacingWriter(writer, toString(value)); setWriter(jsonWriter, nullReplacingWriter); jsonWriter.setSerializeNulls(true); jsonWriter.nullValue(); } finally { setWriter(jsonWriter, writer); jsonWriter.setSerializeNulls(serializeNulls); } }
@Override public void write(JsonWriter jsonWriter, L value) throws IOException { Writer writer = getWriter(jsonWriter); boolean serializeNulls = jsonWriter.getSerializeNulls(); try { // we are using an implementation hack which depends on replacing null with the raw json // supplied as a parameter. In this case, we must ensure we indeed serialize nulls. NullReplacingWriter nullReplacingWriter = new NullReplacingWriter(writer, toString(value)); setWriter(jsonWriter, nullReplacingWriter); jsonWriter.setSerializeNulls(true); jsonWriter.nullValue(); } finally { setWriter(jsonWriter, writer); jsonWriter.setSerializeNulls(serializeNulls); } }