Scala:将JSON文件解析为List [DBObject]

时间:2016-07-20 18:50:21

标签: json mongodb scala casbah

1.Input是包含多条记录的JSON文件。例如:

[ {"user": "user1", "page": 1, "field": "some"}, {"user": "user2", "page": 2, "field": "some2"}, ... ]

2.我需要将文件中的每条记录作为Document加载到MongoDB集合中。 使用casbah与mongo交互,插入数据可能如下所示:

  def saveCollection(inputListOfDbObjects: List[DBObject]) = {
    val xs = inputListOfDbObjects
    xs foreach (obj => {
    Collection.save(obj)
  })

问题:在输出中解析JSON以获取List [DBObject]的正确方法(使用scala)是什么?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以在Scala中使用解析器组合器库。

以下是我发现的一些针对JSON的代码:http://booksites.artima.com/programming_in_scala_2ed/examples/html/ch33.html#sec4

步骤1.创建一个名为JSON的类,其中包含您的解析器规则:

import java.io.FileReader

object ParseJSON extends JSON {
    def main(args: Array[String]) {
        val reader = new FileReader(args(0))
        println(parseAll(value, reader))
    }
}

步骤2.在主函数中,读入JSON文件,将文件内容传递给解析器。

$ awk -F'|' '{sub(/^[^~]*~/, "", $4); sub(/\^.*/, "", $4)} 1' OFS='|' file
aaa|bbb|ccc|eee|hhh|iii
111|222|333|555|888|999
AAA|BBB|CCC||EEE|FFF