yAs*_*AsH 15 parsing json scala
我有一张如下地图
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"]}]
)
Run Code Online (Sandbox Code Playgroud)
我将其转换为Json字符串,然后将其写入包含以下代码的文件中
Some(new PrintWriter("foo.txt")).foreach{p =>
p.write(JSONObject(map.toMap).toString()); p.close
}
Run Code Online (Sandbox Code Playgroud)
能够使用从文件中读取Json字符串
val json_string = scala.io.Source.fromFile("foo.txt").getLines.mkString
Run Code Online (Sandbox Code Playgroud)
如何从上面的Json字符串中获取我的地图?
编辑: 能够阅读地图
val map1 = JSON.parseFull(json_string).get.asInstanceOf[Map[String,Any]]
Run Code Online (Sandbox Code Playgroud)
但是,随着地图大小的增加,这个过程需要更多的时间.
尝试使用可能更快(更彻底)的映射器.
我建议使用JacksMapper,它包装了优秀的Jackson,以获得更舒适的Scala用法.
序列化为JSON变得如此简单
val json = JacksMapper.writeValueAsString[MyClass](instance)
Run Code Online (Sandbox Code Playgroud)
......和反序列化
val obj = JacksMapper.readValue[MyClass](json)
Run Code Online (Sandbox Code Playgroud)
(编辑)
您可以同时写入和读取使用简单的单行文件实用程序从公共-io的做
val json = FileUtils readFileToString (file, encoding)
Run Code Online (Sandbox Code Playgroud)
和
FileUtils write (file, json, encoding)
Run Code Online (Sandbox Code Playgroud)
我实际上从json4s得到了更多的使用。文档更加清晰和全面,使用起来似乎稍微容易一些。
与您请求的操作类似的操作如下所示
import org.json4s.native.JsonFormats.parse
... get your json string ...
val parsedJson = parse(json)
val extractedJson = parsedJson.extract[MyClass]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30307 次 |
| 最近记录: |