ListAdapter теперь понимает упрощение структуры при 1 элементе массива
This commit is contained in:
parent
c63308f37b
commit
78cdc2c886
@ -16,6 +16,11 @@ class ListAdapter<T : Any>(val elementAdapter: TypeAdapter<T>, val valueTransfor
|
|||||||
constructor(type: Class<T>, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer)
|
constructor(type: Class<T>, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer)
|
||||||
|
|
||||||
override fun write(out: JsonWriter, value: List<T>) {
|
override fun write(out: JsonWriter, value: List<T>) {
|
||||||
|
if (value.size == 1) {
|
||||||
|
elementAdapter.write(out, value[0])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
out.beginArray()
|
out.beginArray()
|
||||||
|
|
||||||
for (v in value) {
|
for (v in value) {
|
||||||
@ -26,6 +31,11 @@ class ListAdapter<T : Any>(val elementAdapter: TypeAdapter<T>, val valueTransfor
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun read(reader: JsonReader): List<T> {
|
override fun read(reader: JsonReader): List<T> {
|
||||||
|
if (reader.peek() != JsonToken.BEGIN_ARRAY) {
|
||||||
|
// не массив, возможно упрощение структуры "a": [value] -> "a": value
|
||||||
|
return ImmutableList.of(elementAdapter.read(reader) ?: throw JsonSyntaxException("List does not accept nulls"))
|
||||||
|
}
|
||||||
|
|
||||||
reader.beginArray()
|
reader.beginArray()
|
||||||
|
|
||||||
val builder = ImmutableList.builder<T>()
|
val builder = ImmutableList.builder<T>()
|
||||||
|
Loading…
Reference in New Issue
Block a user