以下のような地図があります
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文字列からマップを取得するにはどうすればよいですか?
編集:で地図を読むことができます
val map1 = JSON.parseFull(json_string).get.asInstanceOf[Map[String,Any]]
ただし、マップのサイズが大きくなるほど、このプロセスには時間がかかります。
おそらくより高速な(そしてより完全な)マッパーを使用してみてください。
私は JacksMapper を使用することをお勧めします Jackson より快適なScalaの使用法。
JSONへのシリアル化は次のように簡単になります
val json = JacksMapper.writeValueAsString[MyClass](instance)
...そして逆シリアル化
val obj = JacksMapper.readValue[MyClass](json)
(編集)
Files from Commons-io を使用して、簡単なワンライナーの書き込みと読み取りを行うこともできます
val json = FileUtils readFileToString (file, encoding)
そして
FileUtils write (file, json, encoding)
実際、私は json4s からより多くの利用を得ました。ドキュメントはより明確で包括的であり、使用方法は少し簡単に思われます。
あなたが要求しているものと同様の操作は次のようになります
import org.json4s.native.JsonFormats.parse
... get your json string ...
val parsedJson = parse(json)
val extractedJson = parsedJson.extract[MyClass]