2016-07-20 9 views
0

1. 입력은 여러 레코드가 포함 된 JSON 파일입니다. 예 :스칼라 : 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) 
    }) 

질문 : JSON 목록 [DBOBJECT] 출력에서 ​​같은 데이터를 얻을 구문 분석하는 올바른 방법 (사용 스칼라) 란 무엇입니까?

도움을 주시면 감사하겠습니다.

답변

0

스칼라에서 파서 연결자 라이브러리를 사용할 수 있습니다. 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에 대해이 작업을 수행 발견 된 일부 코드입니다 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