您應該從dispatch.liftjson.Js._
導入。
擁有特質並沒有什麼幫助,因爲您之後沒有使用它。導入JS._
將會將JS
對象的所有內容納入您的範圍,包括implicit conversionrequestToJsonVerbs
它具有trait ImplicitJsonVerbs
。此方法將您從:/("example.com")/path
獲得的標準Dispatch Request
轉換爲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
類似,但增加了Failure
,這表明Box
爲空的原因。所以,在這種情況下,我會得到一個Full[Device]
或Failure
。便利!