Moshi v1.6.0 Release Notes
Release Date: 2018-05-15 // almost 6 years ago-
2018-05-14
Moshi now supports codegen for Kotlin. We've added a new annotation processor that generates a small and fast JSON adapter for your Kotlin types. It can be used on its own or with the existing
KotlinJsonAdapterFactory
adapter.Moshi now resolves all type parameters. Previously Moshi wouldn't resolve type parameters on top-level classes.
New: Support up to 255 levels of nesting when reading and writing JSON. Previously Moshi would reject JSON input that contained more than 32 levels of nesting.
New: Write encoded JSON to a stream with
JsonWriter.value(BufferedSource)
. Use this to emit a JSON value without decoding it first.New:
JsonAdapter.nonNull()
returns a new JSON adapter that forbids explicit nulls in the JSON body. Use this to detect and fail eagerly on unwanted nulls.New:
JsonReader.skipName()
is likenextName()
but it avoids allocating when a name is unknown. Use this whenJsonReader.selectName()
returns -1.New: Automatic module name of
com.squareup.moshi
for use with the Java Platform Module System. This moves moshi-adapters into its own.adapters
package and forwards the existing adapter. It moves the moshi-kotlin into its own.kotlin.reflect
package and forwards the existing adapter.New: Upgrade to Okio 1.14.0.
<dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>1.14.0</version> </dependency> com.squareup.okio:okio:1.14.0
Fix: Fail fast if there are trailing non-whitespace characters in the JSON passed to
JsonAdapter.fromJson(String)
. Previously such data was ignored!Fix: Fail fast when Kotlin types are abstract, inner, or object instances.
Fix: Fail fast if
name()
is called out of sequence.Fix: Handle asymmetric
Type.equals()
methods when doing type comparisons. Previously it was possible that a registered type adapter would not be used because itsType.equals()
method was not consistent with a user-provided type.Fix:
JsonValueReader.selectString()
now returns -1 for non-strings instead of throwing.Fix: Permit reading numbers as strings when the
JsonReader
was created from a JSON value. This was always supported when reading from a stream but broken when reading from a decoded value.Fix: Delegate to user-adapters in the adapter for Object.class. Previously when Moshi encountered an opaque Object it would only use the built-in adapters. With this change user-installed adapters for types like
String
will always be honored.