如何使用函数式编程范式删除以下代码片段中的“var”,我试图将 json 字符串解析为 map[String,Object],如果失败,我将其解析为 map[Long,Object] ,所以'KEY_TYPE'只是一个开关,我如何在函数式编程中实现开关逻辑?
var KEY_TYPE = "String"
/**
* 解析json格式 先尝试一次解析成Map[String,Object] 失败则解析成Map[Long,Object]
*
* @param runSnap
* @return
*/
def parseJson(runSnap: String): Map[Long, Object] = {
Try {
if (KEY_TYPE == "String") {
JSONUtils.parseByFastJson(runSnap).asScala
.toMap.map(entry => entry._1.toLong -> entry._2)
} else {
JSONUtils.parseByFastJsonLongKey(runSnap).asScala
.toMap.map(entry => Long2long(entry._1.toLong) -> entry._2)
}
} match {
case Success(result) => result
case Failure(exception) => {
println("json parse excepiton " + exception)
if (KEY_TYPE == "String") {
KEY_TYPE = "Long"
parseJson(runSnap)
} else {
Map[Long, Object]()
}
}
}
}