Я создаю HTTP-сервис с помощью scala-play. Я хочу обслуживать ответ JSON.
Для того, чтобы служить в ответ JSON, я создал классы тематических и создал экземпляр Writes [T] Класс, который похож на следующиеСоздание JSON в Scala
case class Point(X: Double, Y: Double)
implicit val pointWrites = new Writes[Point] {
def writes(point: Point) = Json.obj(
"X" -> point.X,
"Y" -> point.Y
)
}
могу ответ сервера, как: val json = Json.toJson(Point(10, 20))
я следовал выше подхода с игровой документации ,
Почему мне нужно определить класс и создать экземпляр Writes [T] для ответа JSON. Если мне нужно создать JSON для десятков классов, мне нужно определить все классы и создать экземпляры для Writes [T]?
можно легко конвертировать любые данные класса в формате JSON с следующим способом:
def getJSON(data: Map[String, String]): JsObject = {
JsObject(data.map { el => el._1 -> JsString(el._2) })
}
Все, что нужно сделать, это создать Map [String, String] для любого класса служить JSON.
Почему для воспроизведения документации рекомендуется определить класс case и создать экземпляр Writes [T] для создания представления JSON?
Есть ли другой способ обслуживания создать JSON в scala? Я хочу, чтобы время отклика было минимальным, так что создание JSON должно быстро освещаться.
Если все классы, которые вам нужны, можно охарактеризовать как «Map [String, String]», тогда ваше решение будет прекрасным. Но JSON может представлять другие типы: booleans, числа, массивы, вложенные объекты и т. Д. –
А также о вложенных объектах или объектах JSON, которые зависят друг от друга? Я думаю, что основное преимущество игрового способа использования классов - определить сериализацию JSON один раз, а затем его можно использовать в различных контекстах. – josephpconley
Вам, вероятно, не нужны записи для всего. Он просто позволяет вам выполнять некоторые настройки, такие как изменение имени члена или преобразование значения в какой-либо другой тип. Вы всегда можете попробовать преобразовать объект, не определяя для него записи, и посмотреть, что вы получаете, а затем, если вам нужно что-то другое, добавьте записи. –