diff --git a/moshi/src/main/java/com/squareup/moshi/BufferedSinkJsonWriter.java b/moshi/src/main/java/com/squareup/moshi/BufferedSinkJsonWriter.java index 5a6be26..e0603e4 100644 --- a/moshi/src/main/java/com/squareup/moshi/BufferedSinkJsonWriter.java +++ b/moshi/src/main/java/com/squareup/moshi/BufferedSinkJsonWriter.java @@ -260,6 +260,13 @@ final class BufferedSinkJsonWriter extends JsonWriter { return this; } + @Override public JsonWriter value(Boolean value) throws IOException { + if (value == null) { + return nullValue(); + } + return value(value.booleanValue()); + } + @Override public JsonWriter value(double value) throws IOException { if (Double.isNaN(value) || Double.isInfinite(value)) { throw new IllegalArgumentException("Numeric values must be finite, but was " + value); diff --git a/moshi/src/main/java/com/squareup/moshi/JsonWriter.java b/moshi/src/main/java/com/squareup/moshi/JsonWriter.java index e8f7be3..d069477 100644 --- a/moshi/src/main/java/com/squareup/moshi/JsonWriter.java +++ b/moshi/src/main/java/com/squareup/moshi/JsonWriter.java @@ -228,6 +228,13 @@ public abstract class JsonWriter implements Closeable, Flushable { */ public abstract JsonWriter value(boolean value) throws IOException; + /** + * Encodes {@code value}. + * + * @return this writer. + */ + public abstract JsonWriter value(Boolean value) throws IOException; + /** * Encodes {@code value}. * diff --git a/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java b/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java index f4bf161..9aad72c 100644 --- a/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java +++ b/moshi/src/main/java/com/squareup/moshi/StandardJsonAdapters.java @@ -76,7 +76,7 @@ final class StandardJsonAdapters { } @Override public void toJson(JsonWriter writer, Boolean value) throws IOException { - writer.value(value); + writer.value(value.booleanValue()); } @Override public String toString() { diff --git a/moshi/src/test/java/com/squareup/moshi/BufferedSinkJsonWriterTest.java b/moshi/src/test/java/com/squareup/moshi/BufferedSinkJsonWriterTest.java index 9a09e3b..d430b2f 100644 --- a/moshi/src/test/java/com/squareup/moshi/BufferedSinkJsonWriterTest.java +++ b/moshi/src/test/java/com/squareup/moshi/BufferedSinkJsonWriterTest.java @@ -292,6 +292,17 @@ public final class BufferedSinkJsonWriterTest { assertThat(buffer.readUtf8()).isEqualTo("[true,false]"); } + @Test public void boxedBooleans() throws IOException { + Buffer buffer = new Buffer(); + JsonWriter jsonWriter = JsonWriter.of(buffer); + jsonWriter.beginArray(); + jsonWriter.value((Boolean) true); + jsonWriter.value((Boolean) false); + jsonWriter.value((Boolean) null); + jsonWriter.endArray(); + assertThat(buffer.readUtf8()).isEqualTo("[true,false,null]"); + } + @Test public void nulls() throws IOException { Buffer buffer = new Buffer(); JsonWriter jsonWriter = JsonWriter.of(buffer);