2016-07-20 4 views
0

1.Inputは、複数のレコードを含むJSONファイルです。例:Scala:JSONファイルをListに解析する[DBObject]

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

2.IはMongoDBのコレクションにドキュメントなどのファイルから各レコードをロードする必要があります。 データがどのように見えるかもしれ挿入、モンゴと対話するためのcasbahの使用:

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

質問:出力で[DBObjectを]リストなどのデータを取得するためにJSONを解析する(スカラを使用して)正しい方法は何ですか?

何か助けていただければ幸いです。

答えて

0

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.あなたの主な機能には、読んでJSONファイルで、ファイルの内容をパーサに渡します。

import java.io.FileReader 

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

答えにコードを入れることをお勧めします。リンクは常に破られています。これは、あなたの答えがもはや機能しなくなることを意味します。 – Hyperbole