scala lift json: сопоставление с образцом по неизвестным данным? - PullRequest
3 голосов
/ 11 мая 2011

У меня есть какой-то странный json, который я не могу изменить, и я хочу проанализировать его, используя JsonParsen в лифте.

Типичный json выглядит так:

    {"name":"xxx",  "data":{
        "data_123456":{"id":"Hello"},
        "data_789901":{"id":"Hello"},
        "data_987654":{"id":"Hello"},  
}}

Проблема в том, что ключи для данных неизвестны (data_xxxxx, где xx: s не известны).Это плохой JSON, но я должен с этим смириться.

Как я должен настроить case-классы в Scala, чтобы иметь возможность строить правильную структуру, когда ключи здесь неизвестны, но структура известна

1 Ответ

5 голосов
/ 12 мая 2011

Вы можете использовать карту, и каждое значение также может быть 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)))
...