【问题标题】:Scala: parse JSON file into List[DBObject]Scala:将 JSON 文件解析为 List[DBObject]
【发布时间】:2016-07-20 18:50:21
【问题描述】:

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

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

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

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

问题:解析 JSON 以在输出时将数据作为 List[DBObject] 的正确方法是什么(使用 scala)?

感谢任何帮助。

【问题讨论】:

    标签: json mongodb scala casbah


    【解决方案1】:

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

    这是我发现的一些用于 JSON 的代码:http://booksites.artima.com/programming_in_scala_2ed/examples/html/ch33.html#sec4

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

    import scala.util.parsing.combinator._
    
    class JSON extends JavaTokenParsers {   
    
      def value : Parser[Any] = obj | arr | 
                            stringLiteral | 
                            floatingPointNumber | 
                            "null" | "true" | "false"
    
      def obj   : Parser[Any] = "{"~repsep(member, ",")~"}"
    
      def arr   : Parser[Any] = "["~repsep(value, ",")~"]"
    
      def member: Parser[Any] = stringLiteral~":"~value
    }
    

    第 2 步。在您的 main 函数中,读入您的 JSON 文件,将文件的内容传递给您的解析器。

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

    【讨论】:

    • 将代码放入您的答案中是个好主意。链接一直断开,这意味着您的答案将不再有效。
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2019-05-20
    • 1970-01-01
    • 2013-08-27
    • 2014-07-31
    相关资源
    最近更新 更多