下面,我正在尝试提取Tweet JSON字段retweeted_status
。我检查JSON是否包含该字段,然后使用Try
提取它。我想将提取的值在成功时分配给var retweet_count
,在失败时将retweet_count
分配为0。但是当我尝试使用此case Success(result)=> retweet_count = result
时,出现不匹配错误,指出BigInt无法与单位匹配。
打印出retweeted_favorite_count2
的类,我得到scala.runtime.BoxedUnit
。解决此问题的方法是什么?
var retweet_count: BigInt= 0
if (value.has("retweeted_status")){
val retweeted_favorite_count0 = value\"retweeted_status"\"favorite_count"
val retweeted_favorite_count1 = Try(retweet_count=retweeted_favorite_count0.extract[BigInt])
val retweeted_favorite_count2 = retweeted_favorite_count1 match {
case Success(result)=> result
case Failure(exception)=> 0
case _=> 0
}
println(" retweeted_favorite_count2"+ retweeted_favorite_count2.getClass )
答案 0 :(得分:3)
您的Try
的内容是一个赋值:retweet_count=...
赋值没有有意义的返回值,因此result
中的Success(result)
不是Int
。 / p>
您可以通过评估Try
后进行分配来解决此问题。
val retweeted_favorite_count2 =
Try(retweeted_favorite_count0.extract[BigInt]) match {
case Success(result)=>
retweet_count = result
result
case Failure(_)=> 0
}