からインポートする必要がありますdispatch.liftjson.Js._
。
あなたはそれを使っていないので、特性を持つことは役に立ちません。JS._
インポートにより、オブジェクトのすべてのコンテンツがスコープJS
に取り込まれます。これには、からの暗黙的な変換 も含まれます。このメソッドは、から持っている標準のDispatchを、メソッドを持つに変換します。requestToJsonVerbs
trait ImplicitJsonVerbs
Request
:/("example.com") / path
JsonVerbs
>#
APIをクエリする方法の要約サンプルを次に示します。
import dispatch._
import dispatch.liftjson.Js._
import net.liftweb.common.{Box, Failure, Full}
import net.liftweb.util.Helpers
case class Device(device_token: String, alias: Option[String])
val req = devicesReq / device_token as (app_token, secret)
Helpers.tryo(http(req ># (json => {
json.extract[Device]
})))
ご覧のとおり、私は正しいインポートを持っており(さらに、私が好きないくつかのLiftライブラリ用のいくつかもあります)、そして私のRequest
その後の'には'>#
メソッドがあります。>#
期待される署名()に一致する関数を与えて(JValue) ⇒ T
、離れて行きます。
ご参考までに、私は特に、lift-jsonのケースクラスに抽出する機能を使用していT
ます。つまり、 Device
。ただし、lift-jsonは、をに変換できない場合にも例外をスローするJValue
ためDevice
、リクエスト全体をHelper.tryo
、try-catch呼び出しをラップして.を返すLiftヘルパーメソッドでラップしましたBox
。Box
標準のScalaに似ていますOption
が、が追加されています。これは、aが空Failure
である理由を示しています。Box
したがって、この場合、aFull[Device]
または。のいずれかを取得しますFailure
。ハンディ!