diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt index 090ed74a..cb607551 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/ListAdapter.kt @@ -16,6 +16,11 @@ class ListAdapter(val elementAdapter: TypeAdapter, val valueTransfor constructor(type: Class, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer) override fun write(out: JsonWriter, value: List) { + if (value.size == 1) { + elementAdapter.write(out, value[0]) + return + } + out.beginArray() for (v in value) { @@ -26,6 +31,11 @@ class ListAdapter(val elementAdapter: TypeAdapter, val valueTransfor } override fun read(reader: JsonReader): List { + 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() val builder = ImmutableList.builder()