gpt4 book ai didi

json - Scala - 将 Json 对象写入文件并读取它

转载 作者:行者123 更新时间:2023-12-03 20:49:02 24 4
gpt4 key购买 nike

我有一张像下面这样的 map

val map : scala.collection.mutable.Map[String,Any] = Map(
dummy1 -> ["cat1", "hash1", 101, 1373269076, {"1" : ["dummy", "dummy", "dummy"]}],
dummy2 -> ["cat1", "hash1", 102, 1373269076, {"2" : ["dummy", "dummy", "dummy"]}],
dummy3 -> ["cat1", "hash1", 103, 1373269076, {"3" : ["dummy", "dummy", "dummy"]}]
)

我将其转换为 Json 字符串,然后使用以下代码将其写入文件
Some(new PrintWriter("foo.txt")).foreach{p =>
p.write(JSONObject(map.toMap).toString()); p.close
}

我能够使用从文件中读取 Json 字符串
val json_string = scala.io.Source.fromFile("foo.txt").getLines.mkString

如何从上面的 Json 字符串中取回我的 map ?

编辑:我能够阅读 map
val map1 = JSON.parseFull(json_string).get.asInstanceOf[Map[String,Any]]

但是,随着 map 大小的增加,此过程需要更多时间。

最佳答案

ujson是读取和写入 JSON 的最佳现代解决方案。
以下是构建对象并将其写入磁盘的方法:

val weirdData = ujson.Obj(
"something1" -> ujson.Arr("cat1", "hash1", 101),
"something2" -> ujson.Arr("cat2", "hash2", 102),
"something3" -> ujson.Arr("cat3", "hash3", 103)
)
os.write(os.pwd/"tmp"/"weird_data.json", weirdData)
这是 weird_data.json的内容文件:
{
"something1":["cat1","hash1",101],
"something2":["cat2","hash2",102],
"something3":["cat3","hash3",103]
}
您可以轻松地将这些数据从 JSON 文件读取到 ujson 对象。
val jsonString = os.read(os.pwd/"tmp"/"weird_data.json")
val data = ujson.read(jsonString)
// here's what data contains
ujson.Value.Value = Obj(
LinkedHashMap(
"something1" -> Arr(ArrayBuffer(Str("cat1"), Str("hash1"), Num(101.0))),
"something2" -> Arr(ArrayBuffer(Str("cat2"), Str("hash2"), Num(102.0))),
"something3" -> Arr(ArrayBuffer(Str("cat3"), Str("hash3"), Num(103.0)))
)
)
这是从 ujson 对象中获取值的方法。
data("something2")(1).str // "hash2"
here有关使用 Scala 编写 JSON 数据的更多详细信息。

关于json - Scala - 将 Json 对象写入文件并读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17521364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com