Сопоставьте часто меняющееся значение JSON с соответствующим элементом в Scala

У меня есть значение JSON, например

{
    "valType": "Integer",
    "data": 5
}

or

{
    "valType": "Integer",
    "data": [2, 3]
}

or

{
    "valType": "String",
    "data": "value1"
}

or

{
    "valType": "String",
    "data": ["string1", "string2"]
}

значение ключа data меняется. Когда я попытался отобразить их в Scala с помощью

class value {
    var valType: String = _
    var data: Any = _
}

используя ObjectMapper, он отлично работает.

Но, попробовав это с lift-json, используя класс

case class value(valType: String, data: Any) {}

, выдает ошибку

Exception in thread "main" net.liftweb.json.MappingException: No usable value for data
No information known about type

Как я могу решить то же самое в lift-json?

Версия: Scala: 2.11 Lift-json: 2.6


person user811602    schedule 31.12.2018    source источник
comment
ObjectMapper работает нормально, но я хочу решить проблему с Lift-json   -  person user811602    schedule 31.12.2018
comment
Я не знаком с Lift, но в сообщении говорилось, что вы не можете использовать тип Any для var value, так как это не поможет библиотеке узнать, как его анализировать.   -  person Mahmoud Hanafy    schedule 31.12.2018


Ответы (1)


Вы должны написать собственный сериализатор, который анализирует поле «значение» по-разному в зависимости от содержимого поля «valType».

Как написать сериализатор, описано в статье Сериализация неподдерживаемых типов в файле readme для lift-json.

person Aki    schedule 31.12.2018