gpt4 book ai didi

json - 如何将 jsonAST.Jint 转换为 int

转载 作者:行者123 更新时间:2023-12-04 19:43:02 26 4
gpt4 key购买 nike

我正在尝试学习 Scala,并且正在尝试解析 JSON 文件。我有两行代码:

var jVal:JValue = parse(json);
val totalCount:Int = (jVal \\ "totalCount").asInstanceOf[Int];

但是,(jVal\\"totalCount") 返回一个 JInt 而不是一个 int。如果我将它打印为字符串,它看起来像 "JInt(38)"

到底如何将其转换为常规 int?我当前的代码抛出一个异常说明

net.liftweb.json.JsonAST$JInt cannot be cast to java.lang.Integer

我已经搜索了互联网,但找不到任何答案。我真的不想手动解析和删除字符串的“JInt()”部分,只是为了将其作为整数获取。

我肯定错过了一个简单的方法来做到这一点?

最佳答案

JInt是一个案例类,提取值的一种便捷方法是使用提取器表达式,在 match 中:

myJValue match {
case JInt(x) => /* do something with x */
case JString(s) => /* do something with s */
/* etc. */
}

或者只是一个赋值语句,当你知道期望的类型时:

val JInt(totalCount) = (jVal \\ "totalCount")

这会将 totalCount 定义为 JSON 中“totalCount”的值。请注意,它将是 BigInt 类型。如果需要,您可以使用 toIntBigInt 转换为 Int方法。但是如果你的数字对于 Int 来说太大了,这个方法会给你一个不同的数字而不是一个错误。因此,如果有可能出现大量数字,您需要先使用 isValidInt 检查。


您也可以使用 num 字段或 values 方法获取值,但在您的代码中这更难使用。要使用 num,您必须将 JValue 转换为 JInt。如果您不转换为 JInt,您将不知道 values 的结果类型。

关于json - 如何将 jsonAST.Jint 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com