Moshi v1.6.0 Release NotesRelease Date: 2018-05-15 // over 3 years ago
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
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.
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.
nextName()but it avoids allocating when a name is unknown. Use this when
New: Automatic module name of
com.squareup.moshifor use with the Java Platform Module System. This moves moshi-adapters into its own
.adapterspackage and forwards the existing adapter. It moves the moshi-kotlin into its own
.kotlin.reflectpackage 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 its
Type.equals()method was not consistent with a user-provided type.
JsonValueReader.selectString()now returns -1 for non-strings instead of throwing.
Fix: Permit reading numbers as strings when the
JsonReaderwas 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
Stringwill always be honored.