我正在使用JSON.parseFull()解析此字符串.这个方法对我来说非常方便,因为我需要一张Map
val jStr = """{"wt":"json","rows":500}"""
println( JSON.parseFull(jStr) )
Run Code Online (Sandbox Code Playgroud)
这是输出:
Some(Map(wt -> json, rows -> 500.0)) // ´rows´ as Double
Run Code Online (Sandbox Code Playgroud)
我想取回一个Integer而不是Double.
Some(Map(wt -> json, rows -> 500)) // ´rows´ as Integer
Run Code Online (Sandbox Code Playgroud)
那可能吗?
数字的默认转换为双精度.如果要在全局级别覆盖此行为,可以将globalNumberParser属性设置为您自己的(String => Any)函数.如果您只想在每个线程级别覆盖,那么您可以将perThreadNumberParser属性设置为您的函数
在你的情况下:
val myConversionFunc = {input : String => Integer.parseInt(input)}
JSON.globalNumberParser = myConversionFunc
Run Code Online (Sandbox Code Playgroud)
scala> println(JSON.parseFull(jStr))
一些(Map(wt - > json,rows - > 500))
数字的默认转换在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) )
Run Code Online (Sandbox Code Playgroud)
输出:
Some(Map(wt -> json, rows -> 500)) // ´rows´ as Integer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2311 次 |
| 最近记录: |