你如何使用 Scala 将 arraybuffer 中的字符串解析为 double?
How do you parse string from arraybuffer to double using Scala?
我正在尝试将字符串从我通过 Playframework 解析的 ArrayBuffer 映射到 double,但我不断收到以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""0.04245800""
我不确定为什么要这样做,而且我是来自 Python 背景的 Scala 新手。
import org.apache.http.client.methods.HttpGet
import play.api.libs.json._
import org.apache.http.impl.client.DefaultHttpClient
object main extends App {
val url = "https://api.binance.com/api/v1/aggTrades?symbol=ETHBTC"
val httpClient = new DefaultHttpClient()
val httpResponse = httpClient.execute(new HttpGet(url))
val entity = httpResponse.getEntity()
val content = ""
if (entity !=null) {
val inputStream = entity.getContent()
val result = io.Source.fromInputStream(inputStream).getLines.mkString
inputStream.close
println("REST API: " + url)
val json: JsValue = Json.parse(result)
var prices = (json\"p")
println(prices.map(_.toString()).map(_.toDouble))
}
}
如果您确定您的列表只包含字符串,您可以像这样转换它们,并使用 'original' 值从以下位置获取 Double 值:
println(prices.map(_.as[JsString].value.toDouble))
由于 JsString 不是字符串,因此您不能对其调用 toDouble。
只是为了完整性:如果您不确定您的列表只包含字符串,您应该添加一个 instanceof 检查或模式匹配。
我正在尝试将字符串从我通过 Playframework 解析的 ArrayBuffer 映射到 double,但我不断收到以下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""0.04245800""
我不确定为什么要这样做,而且我是来自 Python 背景的 Scala 新手。
import org.apache.http.client.methods.HttpGet
import play.api.libs.json._
import org.apache.http.impl.client.DefaultHttpClient
object main extends App {
val url = "https://api.binance.com/api/v1/aggTrades?symbol=ETHBTC"
val httpClient = new DefaultHttpClient()
val httpResponse = httpClient.execute(new HttpGet(url))
val entity = httpResponse.getEntity()
val content = ""
if (entity !=null) {
val inputStream = entity.getContent()
val result = io.Source.fromInputStream(inputStream).getLines.mkString
inputStream.close
println("REST API: " + url)
val json: JsValue = Json.parse(result)
var prices = (json\"p")
println(prices.map(_.toString()).map(_.toDouble))
}
}
如果您确定您的列表只包含字符串,您可以像这样转换它们,并使用 'original' 值从以下位置获取 Double 值:
println(prices.map(_.as[JsString].value.toDouble))
由于 JsString 不是字符串,因此您不能对其调用 toDouble。
只是为了完整性:如果您不确定您的列表只包含字符串,您应该添加一个 instanceof 检查或模式匹配。