我正在使用JSON.parseFull()解析此字符串。这个方法对我来说非常方便,因为我需要得到一个Map
val jStr = """{"wt":"json","rows":500}"""
println( JSON.parseFull(jStr) )
这是输出:
Some(Map(wt -> json, rows -> 500.0)) // ´rows´ as Double
我想取回一个Integer而不是Double。
Some(Map(wt -> json, rows -> 500)) // ´rows´ as Integer
这可能吗?
答案 0 :(得分:8)
数字的默认转换为双精度。如果要在全局级别覆盖此行为,可以将globalNumberParser属性设置为您自己的(String => Any)函数。如果您只想在每个线程级别覆盖,那么您可以将perThreadNumberParser属性设置为您的函数
在你的情况下:
val myConversionFunc = {input : String => Integer.parseInt(input)}
JSON.globalNumberParser = myConversionFunc
阶> println(JSON.parseFull(jStr))
一些(地图(重 - - > json,行 - > 500))
答案 1 :(得分:4)
数字的默认转换为 scala
中的 Double基本上你需要先将默认号码解析器globalNumberParser
设置为int
JSON.globalNumberParser = {
in =>
try in.toInt catch { case _: NumberFormatException => in.toDouble}
}
val jStr = """{"wt":"json","rows":500}"""
println( JSON.parseFull(jStr) )
输出:
Some(Map(wt -> json, rows -> 500)) // ´rows´ as Integer