从DBObject

时间:2017-06-24 03:05:22

标签: java mongodb

我想将一个JSON数组放入java中的var中。我的JSON似乎没问题但是当我尝试将JSOn数组放入java数组var时它不起作用。 这里得到的错误:errororg.json.JSONException:JSONObject [" tweets"]不是JSONArray。

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    DB db = mongoClient.getDB( "test1" );


    DBCollection coll = db.getCollection("tweetsCol");
    DBCursor cursor = coll.find();

    while (cursor.hasNext()) {

        BasicDBObject obj = (BasicDBObject) cursor.next();
        JSONObject objjj = new JSONObject(obj);
        try{
            System.out.println("okok "+objjj); // THE JSON I WILL SHOW YOU

            JSONArray jsonMainArr = objjj.getJSONArray("tweets");

        }catch(JSONException e){
            System.out.println("error"+e);
        }}

这是我在MongoDB中的数据:

{
   "_id":"5939bc6676abbe186feb73a5",
   "user_request_id":"5941903f37aaa6ec55689e85",
   "tweets":[
      {
         "date":"Wed Jun 07 18:32:57 CDT 2017",
         "text":"[Earthview Wonders][Video] No.265: Astronaut Thomas Pesquet completed 6-month #MissionProxima. #Neweyes\u2026 ",
         "_id":872597276891398144,
         "user":"livearthjp"
      },
      {
         "date":"Wed Jun 07 18:16:56 CDT 2017",
         "text":"Astronaut Thomas Pesquet @Thom_astro Shares His #Songs4Space ",
         "_id":872593245716467712,
         "user":"anasia5mice"
      },
      {
         "date":"Wed Jun 07 15:46:03 CDT 2017",
         "text":"Thomas Pesquet: Undocking and landing ",
         "_id":872555275387117570,
         "user":"GRASSIFREE"
      },
      {
         "date":"Wed Jun 21 17:02:37 CDT 2017",
         "text":"@Thom_astro @Space_Station And his colleagues said, 'Pesquet, if you play Baker Street one more time...'",
         "_id":877647972430823429,
         "user":"kimkemmis"
      },
      {
         "date":"Wed Jun 21 17:01:16 CDT 2017",
         "text":"[News] ",
         "_id":877647632524394497,
         "user":"ArthurC2Pouce"
      },
      {
         "date":"Wed Jun 21 11:28:48 CDT 2017",
         "text":"Thomas Pesquet's music is OUT THERE! Cool dude. ",
         "_id":877563967178104836,
         "user":"tiarudd34"
      },
      {
         "date":"Wed Jun 21 11:10:15 CDT 2017",
         "text":"jaime thomas pesquet",
         "_id":877559296741048320,
         "user":"sosthene_maus"
      },
      {
         "date":"Wed Jun 21 10:23:03 CDT 2017",
         "text":"French astronaut Thomas Pesquet took some of the most amazing pictures ever while in spce ",
         "_id":877547418606329861,
         "user":"raygibbs1"
      },
      {
         "date":"Wed Jun 21 10:23:00 CDT 2017",
         "text":"French astronaut Thomas Pesquet shares stunning pictures of Earth: via @AOL",
         "_id":877547405180157952,
         "user":"raygibbs1"
      },
      {
         "date":"Wed Jun 21 08:46:13 CDT 2017",
         "text":"Coll Cambuston like Thomas Pesquet! @thomastro @cardierun",
         "_id":877523048546676736,
         "user":"CambF974"
      },
      {
         "date":"Wed Jun 21 08:00:06 CDT 2017",
         "text":"Thomas Pesquet returned to Earth on 2 June 2017 after completion of his six-months long Proxima mission to the... ",
         "_id":877511443775619072,
         "user":"rospaceagency"
      },
      {
         "date":"Tue Jun 20 23:50:34 CDT 2017",
         "text":"Thomas Pesquet @Thom_astro and Messier 83 #Astronauts #ESA @CNES #NASA ✨\u200d✨ ",
         "_id":877388248368033794,
         "user":"AmirAliBehrooz"
      }
   ],
   "query_name":"Pesquet",
   "active":"true",
   "started_at":"2017_06_08"
}

1 个答案:

答案 0 :(得分:0)

现在我更了解你的问题,感谢@Neil Lunn,并且按照他的最佳建议,你必须明白你不是在这里与Json打交道,你可以直接做:

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    DB db = mongoClient.getDB( "test1" );


    DBCollection coll = db.getCollection("tweetsCol");
    DBCursor cursor = coll.find();

    while (cursor.hasNext()) {

        BasicDBObject obj = (BasicDBObject) cursor.next();
        try{
            System.out.println("okok "+obj); // THE JSON I WILL SHOW YOU

            BasicDBList jsonMainArr = obj.get("tweets");

        }catch(JSONException e){
            System.out.println("error"+e);
        }}