У меня многослойная карта:
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"))
и сохранил в файл:
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 и регенерировать переменную карты. Я пробовал варианты ниже:
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)
Я получаю:
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
.