У меня есть следующие строки класса дел, которые я хочу отфильтровать и представить их как json
case class Row(id: UUID, ownerId: UUID, typeId: UUID, name: String, value: String)
json формат, который я хочу представить в
{
"owner": "ownerId",
"configurations": {
"typeId1": {
"name1": "value1",
"name2": "value2"
},
"typeId2": {
"name3": "value3",
"name4": "value4"
}
}
}
Теперь я конвертирую это в следующий тип результата
case class Data(owner: String, configurations: Map[String, Map[String, String]])
Я делаю выше, используя следующую функцию
def convert(rows: Seq[Row]): Data =
Data(owner = <SomedatabaseCall to populate this>,
configurations = rows.groupMapReduce(_.typeId/*Actually need to populate this with a database call as well*/)(r => Map(r.name -> r.value))(_ ++ _))
У меня есть три вопроса здесь:
Как вы можете сделать маршалинг объекта Карта Карты, используя брызги - json, я не могу это убрать?
Теперь, если мы видим, что typeId
на самом деле является UUID, и мне нужно сделать еще один вызов базы данных, чтобы найти typeName
, каков наилучший способ заполнить его и создать пользовательский объект json, который я хочу создать?
Я не могу использовать метод groupMapReduce
, так как мы используем версию 2.12 scala, и я не могу выполнить обновление по другим причинам. Любая альтернатива группировке по typeName