【问题标题】:Errors in converting JSON to Map in Scala在 Scala 中将 JSON 转换为 Map 时出错
【发布时间】:2019-11-25 17:18:37
【问题描述】:

我是 scala 的新手,我正在尝试编写一个接收 JSON 的函数,将其转换为 Scala 字典 (Map) 并检查某些键

下面是检查一堆键的函数的一部分

import play.api.libs.json.Json
def setParams(jsonString: Map[String, Any]) = {
    val paramsMap = Json.parse(jsonString)
    if (parmsMap.contains("key_1")) {
      println('key_1 present')
    }

使用sbt 编译时,出现以下错误

/Users/usr/scala_codes/src/main/scala/wrapped_code.scala:29:26: overloaded method value parse with alternatives:
[error]   (input: Array[Byte])play.api.libs.json.JsValue <and>
[error]   (input: java.io.InputStream)play.api.libs.json.JsValue <and>
[error]   (input: String)play.api.libs.json.JsValue
[error]  cannot be applied to (Map[String,Any])
[error]     val paramsMap = Json.parse(jsonString)
[error]                          ^
[error] /Users/usr/scala_codes/src/main/scala/wrapped_code.scala:31:9: not found: value parmsMap
[error]     if (parmsMap.contains("key_1")) {

此外,在 JSON 的键值对中,键都是字符串,但值可以是整数、浮点数或字符串。我需要为此做出改变吗?

【问题讨论】:

标签: scala playframework sbt


【解决方案1】:

似乎您在 setParams 函数中的输入类型应该是 String 而不是 Map[String, Any] 你有一个错字:if (parmsMap.contains("key_1")) 应该是if (paramsMap.contains("key_1")) 正确的功能:

def setParams(jsonString: String): Unit = {
  val paramsMap = Json.parse(jsonString).as[Map[String, JsValue]]
  if (paramsMap.contains("key_1")) println('key_1 present')
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    相关资源
    最近更新 更多