дубликат ключа при десериализации ObservableArrayMap (привязка данных Android) с GSON - PullRequest
0 голосов
/ 26 марта 2019

Я столкнулся с проблемой с GSON при десериализации ObservableArrayMap

рассмотрим следующий класс:

class SomeTestClass {
    val name : ObservableField<String> = ObservableField("initial value")
    val someNumber = ObservableField(0)
    val someMap = ObservableArrayMap<String, String>()
}

Затем я создаю экземпляр и сериализую его так:

fun someFunction() {
    val converter = Gson()
    val test = SomeTestClass()
    test.someMap["cat"] = "dog"
    val json = converter.toJson(test)
    v("GSON", json)
    val backFromJson = converter.fromJson(json, SomeTestClass::class.java)    
}

сериализованный JSON, который я получаю:

{
    "name": {
    "mValue": "initial value"
},
    "someMap": {
    "cat": "dog"
},
    "someNumber": {
    "mValue": 0
}
}

, чего я и ожидал, однако строка fromJson завершается с ошибкой: com.google.gson.JsonSyntaxException: duplicate key: cat

Я могу заменитьObservableArrayMap с ObservableField<Map<K, V>>, но это не дает мне необходимых функций.

Заранее спасибо.

...