Есть ли способ указать значения для разбора клаксона

data class AI constructor(@Json(ignored = true) val statusCode: Int,
                                              @Json(name="a") val a: Long?,
                                              @Json(name="b")val b: Long?,
                                              @Json(name="c")val c: Date?,
                                              @Json(name="d")val d: Long?,
                                              @Json(name="e")val e: String?,
                                              @Json(name="f")val f: String?) : AI()

вот как я использую библиотеку Klaxon для вышеупомянутого (ответ имеет тип Response от khttp)

if (response.statusCode == 200) {
            val nullable: AI? = Klaxon().parse<AI>(response.text)
}

Проблема здесь в том, что response.text не будет иметь код состояния, потому что он фактически получается из:

response.statusCode()

В идеале я искал способ передать Клаксону пару имя-значение, которую он может использовать для установки значений, которые он не находит.

Пока что мой список решений (ни один из них не кажется оптимальным):

  1. сделать 200 значением по умолчанию для этого класса данных, на самом деле не желая делать это, так как 304 допустим.
  2. создайте класс для этих данных, затем создайте AI с помощью statusCode и экземпляра созданного класса, конечно, но если мне придется делать это для каждого случая, когда я сталкиваюсь с этим, у меня будет много классов данных с 1 или 2 полями.
  3. манипулировать JSON, чтобы включить код состояния, это похоже на хакерскую работу.
  4. надеюсь, у Клаксона есть метод установки значений во время синтаксического анализа.

Я действительно ищу что-то около пункта 4, поэтому, если у кого-то есть какие-либо идеи, я весь в ушах

0 ответов

Другие вопросы по тегам