#json #scala #pattern-matching #lift #case-class
#json #scala #сопоставление с шаблоном #поднимать #случай-класс
Вопрос:
У меня есть какой-то странный json, который я не могу изменить, и я хочу разобрать его с помощью JsonParsen в lift.
Типичный json похож:
{"name":"xxx", "data":{ "data_123456":{"id":"Hello"}, "data_789901":{"id":"Hello"}, "data_987654":{"id":"Hello"}, }}
Проблема в том, что ключи для данных неизвестны (data_xxxxx, где xx: s
неизвестны).
Это плохой json, но мне приходится с этим жить.
Как я должен настроить case-классы в scala, чтобы иметь возможность создавать надлежащую структуру, когда ключи здесь неизвестны, но структура известна?
Ответ №1:
Вы можете использовать Map, и каждое значение также может быть JValue, представляющим неотправленный JSON. Пример:
case class Id(id: String)
case class Data(name: JValue, data: Map[String, Id])
И затем:
json.extract[Data]
res0: Data(JString(xxx),Map(data_123456 -> Id(Hello), data_789901 -> Id(Hello), data_987654 -> Id(Hello)))