Я устал писать blah: "${JSON.stringify(target)}"
, когда я занимаюсь своими объектами DTO, я просто хочу написать blah: "$target"
.Как переопределить метод toString() на объектах JS для использования JSON.stringify()?
Моего DTOS выглядеть следующим образом:
@js.native
trait AuthConnectionDetails extends js.Object {
def clientId: String = js.native
def accountHostname: String = js.native
}
Этих DTOS используются для анализа содержания некоторых REST API вызовов, например:
val response = js.JSON.parse(xmlHttpRequest.responseText).
asInstanceOf[AuthConnectionDetails]
Я не против изменения, как я определяю мой DTO объекты для этого (возможно, я должен использовать классы case для своих DTO или что-то, вместо собственных js-признаков?), но я не могу понять, как это сделать.
Я попытался написать черту, которую я мог бы смешивать, но это не сработало, и я попытался написать неявный метод расширения, но это тоже не сработало.
Мой неявный код, который не похоже на работу для ToString:
object JsonToString {
implicit class JsObjectExtensions(val target: js.Object) extends AnyVal {
override def toString:String = JSON.stringify(target)
def json:String = JSON.stringify(target)
}
}
Так что я могу сделать blah: "${target.json}"
, что лучше - но я бы особенно хотел, чтобы избавиться от этих скобок.
Есть ли способ сделать это с помощью scala.js?