有一个问题,我只想从此JsValue
返回一个空字符串,而不是在没有找到值的情况下返回0。基本上我想要的是:
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse("")
我这样做主要是因为我使用Apache POI构建Excel工作表,并且在没有任何数据时不希望将零作为默认值。但是要使用.setCellValue(cellValue)
,它不能是Any
类型,这就是给我的。
我试过
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0)
if(cellValue == 0) {
cellValue = ""
}
cell.setCellValue(cellValue)
但是这给我带来了将cellValue
更改为String
类型的问题。也尝试了这个
var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0)
if(cellValue == 0) {
cell.setCellValue("")
} else cell.setCellValue(cellValue)
但这给了我一个问题,即我正在使用替代方法重载方法.setCellValue
。我已经习惯了这个工作,因为我来自Java背景,不知道为什么会失败。
我仍然掌握Scala的情况,所以如果有一个简单的解决方案,请耐心等待。
答案 0 :(得分:3)
一个想法是在调用map
之前使用Option[Float]
将Option[String]
转换为getOrElse
:
val cellValue = (x \ "name" \ "date").asOpt[Float]
.map(_.toString)
.getOrElse("")
以上内容会返回String
。
cell.setValue(cellValue)