json - 如何将 json 字符串转换为 scala 映射?

标签 json scala jackson json4s

我有一个未定义结构的嵌套 json。因为我是从远程文件读取的,所以每次运行时它都可能不同。我需要将此 json 转换为 Map[String, Any] 类型的 map .我试图研究 json4s 和 jackson 解析器,但它们似乎并没有解决我遇到的这个问题。
有谁知道我怎么能做到这一点?

示例字符串:

{"body":{
    "method":"string",
    "events":"string",
    "clients":"string",
    "parameter":"string",
    "channel":"string",
    "metadata":{
        "meta1":"string",
        "meta2":"string",
        "meta3":"string"
    }
},
"timestamp":"string"}

嵌套级别可以是任意的,并且不是预定义的。
为了帮助使用案例:
我有一个 Map[String,Any] 需要存储在文件中作为备份。所以我将其转换为 json 字符串并将其存储在一个文件中。现在每次获得新数据时,我都需要从文件中获取 json,再次将其转换为 map 并执行一些计算。我无法将 map 存储在内存中,因为如果我的工作失败,我会失去它。
我需要一个解决方案,将 json 字符串转换回我转换之前的原始 map 。

最佳答案

我用 json4s 尝试了以下方法3.2.11,它的工作原理:

import org.json4s._
import org.json4s.jackson.JsonMethods._

//...
def jsonStrToMap(jsonStr: String): Map[String, Any] = {
  implicit val formats = org.json4s.DefaultFormats

  parse(jsonStr).extract[Map[String, Any]]
}

也许你没有定义 implicit val类型 Formats ?另请注意,您不需要 implicit val只要在范围内可以找到,就在每种方法中。

关于json - 如何将 json 字符串转换为 scala 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908297/

相关文章:

json - Visual Studio Code侧边栏选择颜色

scala - 如何从左到右和从右到左遍历数组?

java - Jackson @JsonInclude(Include.ALWAYS) 适用于所有 child

java - spring mvc 不返回 json 内容 - 错误 406

scala - Scala 解释器的局限性和解决方法是什么?

java - 如何改进两个 Json 结果之间的联接?

javascript - 使用参数的值来访问对象属性

java - 如何将 thrift 对象转换为可读字符串并将其转换回来?

javascript - 在 nvd3.js 中编辑多条形图中的标签文本

scala - 在 flatMap 中使用 Try