getOrElse默认为不同的types

有一个问题,我只是想从这个JsValue返回一个空string,而不是返回0,如果没有发现值。 基本上我想要如下:

 var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse("") 

我这样做主要是因为我使用Apache POI来build立一个Excel工作表,并不希望零作为默认情况下,当没有任何数据。 但要使用.setCellValue(cellValue)它不能是一个Anytypes,这就是这给了我。

我试过了

 var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cellValue = "" } cell.setCellValue(cellValue) 

但是这给了我更改cellValueStringtypes的问题。 也试过这个

 var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cell.setCellValue("") } else cell.setCellValue(cellValue) 

但这给了我一个问题,我重载方法.setCellValue与替代品。 我习惯了这个工作,因为我来自Java背景,不知道为什么会失败。

如果有一个简单的解决scheme,我仍然得到斯卡拉的吊so,请耐心等待。

一个想法是在调用getOrElse之前使用mapOption[Float]转换为Option[String]

 val cellValue = (x \ "name" \ "date").asOpt[Float] .map(_.toString) .getOrElse("") 

以上返回一个String

 cell.setValue(cellValue)