Не могу отменить кавычки play.api.libs.json.JsObject, рассмотрите возможность предоставления неявного экземпляра Liftable [play.api.libs.json.JsObject] - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь сгенерировать JsObject с макросами Scala.Тип возврата моих макросов должен быть JsObject, но я не могу.Он работает с базовыми типами (String, Int ...)

object JsonSchema {


  def jsonSchema[T]: JsObject = macro impl[T]

  def impl[T: c.WeakTypeTag](c: scala.reflect.macros.whitebox.Context): c.Expr[JsObject] = {
    import c.universe._
    c.Expr[JsObject](q"""${play.api.libs.json.Json.obj("hello"->"world")}""")
  }

Но я получил ошибку

Can't unquote play.api.libs.json.JsObject, consider providing an implicit instance of Liftable[play.api.libs.json.JsObject]

И я не могу найти хороших примеровчтобы сделать мой собственный Liftable.

1 Ответ

0 голосов
/ 25 сентября 2019

Работает с:

implicit val l: c.universe.Liftable[JsObject] = Liftable((in: JsObject) => q"play.api.libs.json.Json.parse(${in.toString()})")

Но я не вижу интереса этого скрытого

...