首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala将多层json转换为多层地图

问Scala将多层json转换为多层地图
EN

Stack Overflow用户
提问于 2019-11-22 06:52:28
回答 1查看 61关注 0票数 0

我有一个多层地图:

代码语言:javascript
复制
import scala.io.Source
import scala.collection.mutable
import io.circe.Printer
import io.circe.parser._
import io.circe.syntax._

var map = mutable.Map[String, mutable.Map[String, mutable.ArrayBuffer[String]]]()
map.update("a", mutable.Map("b1" -> mutable.ArrayBuffer("c", "d", "e", "f")))
map("a").update("b2", mutable.ArrayBuffer("g", "h"))

并将其保存在文件中:

代码语言:javascript
复制
val json_path = "C:/myjason.json"
val json = map.asJson.pretty(Printer.spaces2)
var w: Writer = new FileWriter(json_path,false)
w.write(json)
w.close()

现在,我正在尝试将文件读回到我的scala代码中,并重新生成map变量。我尝试了以下选项:

代码语言:javascript
复制
val json1 = Source.fromFile(json_path).getLines.mkString
val json2 = parse(json1.toString)
val json3 = decode[mutable.Map[String, mutable.Map[String, ArrayBuffer[String]]]](json2.toString)

我得到的是:

代码语言:javascript
复制
json1 is a string of "{"a" : {"b1" : ["c","d","e","f"], "b2" : ["g","h"]}}"
json2 is Right({"a" : {"b1" : ["c","d","e","f"], "b2" : ["g","h"]}})
json3 is io.circe.ParsingFailure: expected json value got 'Right(...' (line 1, column 1)

这些都不是我最初使用的HashMap格式。如果你能建议我如何将它转换成原始的map格式,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-23 08:00:56

我找到了答案:

代码语言:javascript
复制
val json = Source.fromFile(json_path).getLines.mkString
val decoded_json = decode[mutable.Map[String, mutable.Map[String, ArrayBuffer[String]]]](json.toString)
val map = decoded_json.right.get
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58984960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档