2014-03-13 52 views
0

這有什麼問題,我的代碼?我是Java的新手,我試圖將文件導入到MongoDB中。但是,有一個錯誤,我不知道它是什麼。我正在使用Eclipse。源附件不包含文件JSON.class的來源

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import com.mongodb.DB; 
import com.mongodb.DBCollection; 
import com.mongodb.DBCursor; 
import com.mongodb.DBObject; 
import com.mongodb.Mongo; 
import com.mongodb.util.JSON; 
import com.mongodb.util.JSONParseException; 



public class readwrite { 


    public static void main(String[] args) throws FileNotFoundException,IOException,JSONParseException{ 

     Mongo mongo = new Mongo("localhost", 27017); 
     DB db = mongo.getDB("actualdata"); 
     DBCollection collection = db.getCollection("metadata"); 

     String line = null; 
     StringBuilder sb = new StringBuilder(); 

     try { 
      FileInputStream fstream = null; 
      try { 
       fstream = new FileInputStream("/home/Output/json1-100000-all"); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
       System.out.println("File does not exist, exiting"); 
       return; 
      } 

      BufferedReader bufferedReader = 
       new BufferedReader(new InputStreamReader(fstream)); 

      while((line = bufferedReader.readLine()) != null) { 
       System.out.println(line); 
       DBObject dbObject; 
       sb.append(dbObject = (DBObject) JSON.parse(bufferedReader.readLine())); 
       collection.insert(dbObject); 

       DBCursor cursorDoc = collection.find(); 
       while (cursorDoc.hasNext()) { 
        System.out.println(cursorDoc.next()); 
       } 
      }  

      bufferedReader.close();   
     } 
     catch(FileNotFoundException ex) { 
      System.out.println("Unable to open file");    
     } 
     catch(IOException ex) { 
      System.out.println(
       "Error reading file");     
      } 
    } 


} 

這是顯示

[ 
Exception in thread "main" com.mongodb.util.JSONParseException: 
{ 
^ 
    at com.mongodb.util.JSONParser.read(JSON.java:272) 
    at com.mongodb.util.JSONParser.parseObject(JSON.java:230) 
    at com.mongodb.util.JSONParser.parse(JSON.java:195) 
    at com.mongodb.util.JSONParser.parse(JSON.java:145) 
    at com.mongodb.util.JSON.parse(JSON.java:81) 
    at com.mongodb.util.JSON.parse(JSON.java:66) 
    at readwrite.main(readwrite.java:45) 

錯誤它告訴我這個錯誤,當我在com.mongodb.util.JSONParser.read(JSON.java:272)的地方說點擊源未找到。源附件不包含文件JSON.class的來源。 如果我沒有包含DBObject的轉換,我可以打印BufferedReader的輸出。提前致謝!

+0

這樣看來,你想「解析」的JSON是不是都在同一行。 –

+0

你會建議我怎麼做? – user3414091

+0

可能值得在http://codereview.stackexchange.com/上發佈你的代碼嗎? – Trisha

回答

0

1)難道你沒有要寫JSON.parse(行) 而不是JSON.parse(bufferedReader.readLine()))? 這可能會導致它在最後一次迭代嘗試並解析'null'

2)如果這樣做沒有幫助,可以在失敗的迭代中獲得'line'的確切字符串值嗎? (這應該使用調試器或簡單的印刷製出容易)

問候

+0

嗨,對不起,因爲我是Java新手。你有沒有例子說明調試器或簡單打印系統的含義?如果我要刪除DBObject dbObject,我可以打印出來; sb.append(dbObject =(DBObject)JSON.parse(bufferedReader.readLine())); collection.insert(dbObject); – user3414091

+0

對於延遲迴復感到抱歉,我希望現在能解決:) –

+0

但我只是想說「System.out.println(line);」就在現有的「sb.append(dbObject =(DBObject)JSON.parse(...」)之前,因爲它抱怨無法解析該行,所以我們希望看到該行的內容...... –

相關問題