Art*_*Lee 3 json scala type-conversion
我正在尝试学习 Scala,并且正在尝试解析 JSON 文件。我有两行代码:
var jVal:JValue = parse(json);
val totalCount:Int = (jVal \\ "totalCount").asInstanceOf[Int];
Run Code Online (Sandbox Code Playgroud)
但是,(jVal \\ "totalCount")返回一个JInt而不是一个int。如果我将它打印为字符串,它看起来像"JInt(38)".
我到底如何将其转换为常规整数?我当前的代码抛出一个异常说
net.liftweb.json.JsonAST$JInt不能投射到java.lang.Integer
我已经搜索了互联网,但我找不到任何答案。我真的不想手动解析和删除字符串的“JInt()”部分,只是为了将其作为整数。
当然,我错过了一个简单的方法来做到这一点?
由于JInt是一个 case 类,提取值的一种方便的方法是使用提取器表达式,在 a 中match:
myJValue match {
case JInt(x) => /* do something with x */
case JString(s) => /* do something with s */
/* etc. */
}
Run Code Online (Sandbox Code Playgroud)
或者只是一个赋值语句,当你知道期望什么类型时:
val JInt(totalCount) = (jVal \\ "totalCount")
Run Code Online (Sandbox Code Playgroud)
这将定义totalCount为 JSON 中“totalCount”的值。请注意,它将是 类型BigInt。如果您愿意,您可以使用该方法将您的转换BigInt为。但是,如果您的数字对于 an 来说太大,则此方法将为您提供不同的数字而不是错误。因此,如果可能出现大量数字,您需要先检查.InttoIntIntisValidInt
您也可以使用num字段或values方法获取值,但在您的代码中更难使用。要使用num,您必须对您的JValueto 进行转换JInt。如果您不强制转换为JInt,您将不知道 的结果类型values。
| 归档时间: |
|
| 查看次数: |
1799 次 |
| 最近记录: |