Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从DBObject读取属性_Java_Mongodb - Fatal编程技术网

Java 从DBObject读取属性

Java 从DBObject读取属性,java,mongodb,Java,Mongodb,我想将JSON数组放入java中的var中。我的JSON看起来不错,但当我尝试将JSON数组放入java数组变量时,它不起作用。 这里我得到的错误:errororg.json.JSONException:JSONObject[“tweets”]不是JSONArray MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); DB db = mongoClient.getDB( "test1" ); DB

我想将JSON数组放入java中的var中。我的JSON看起来不错,但当我尝试将JSON数组放入java数组变量时,它不起作用。 这里我得到的错误: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 ✨Now I understand better your question thanks to @Neil Lunn, and following his best advice, you have to understand that you are not dealing here with Json, you can directly do:

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);
        }}
{
“_id”:“5939bc6676abbe186feb73a5”,
“用户请求id”:“5941903f37aaa6ec55689e85”,
“推特”:[
{
“日期”:“2017年6月7日星期三18:32:57”,
“文本”:“[地球景观奇观][视频]第265号:宇航员托马斯·佩斯奎特完成了为期6个月的“Proxima”任务,
“_id”:872597276891398144,
“用户”:“livearthjp”
},
{
“日期”:“2017年6月7日星期三18:16:56”,
“文本”:“宇航员Thomas Pesquet@Thom#u astro分享他的#歌曲4Space”,
“_id”:872593245716467712,
“用户”:“anasia5mice”
},
{
“日期”:“2017年6月7日星期三15:46:03”,
“文本”:“托马斯·佩斯奎特:脱离和着陆”,
“_id”:872555275387117570,
“用户”:“GRASSIFREE”
},
{
“日期”:“2017年6月21日星期三17:02:37”,
“文本”:“@Thom_astro@Space_Station和他的同事说,‘佩斯奎特,如果你再玩一次贝克街……’”,
“_id”:877647972430823429,
“用户”:“Kimkemis”
},
{
“日期”:“2017年6月21日星期三17:01:16”,
“文本”:“[新闻]”,
“_id”:877647632524394497,
“用户”:“ARTHOURC2POUCE”
},
{
“日期”:“2017年6月21日星期三11:28:48”,
“文本”:“托马斯·佩斯奎特的音乐就在那里!酷家伙。”,
“_id”:877563967178104836,
“用户”:“TIARUD34”
},
{
“日期”:“2017年6月21日星期三11:10:15”,
“文本”:“詹姆·托马斯·佩斯奎特”,
“_id”:877559296741048320,
“用户”:“SosTene_maus”
},
{
“日期”:“2017年6月21日星期三10:23:03”,
“文字”:“法国宇航员托马斯·佩斯奎特(Thomas Pesquet)在spce拍摄了一些最精彩的照片”,
“_id”:877547418606329861,
“用户”:“raygibbs1”
},
{
“日期”:“2017年6月21日星期三10:23:00”,
“文字”:“法国宇航员托马斯·佩斯奎特通过@AOL分享令人惊叹的地球图片”,
“_id”:877547405180157952,
“用户”:“raygibbs1”
},
{
“日期”:“2017年6月21日星期三08:46:13”,
“文本”:“Coll Cambuston喜欢Thomas Pesquet!@thomastro@cardierun”,
“_id”:877523048546676736,
“用户”:“CambF974”
},
{
“日期”:“2017年6月21日星期三08:00:06”,
“文本”:“Thomas Pesquet于2017年6月2日返回地球,此前他完成了为期六个月的Proxima任务……”,
“_id”:877511443775619072,
“用户”:“RospaceAgeneration”
},
{
“日期”:“2017年6月20日星期二23:50:34 CDT”,

“文本”:“托马斯·佩斯奎特@Thom#u astro and Messier 83#宇航员#欧空局@CNES#NASA”✨ 感谢@Neil Lunn,现在我对你的问题有了更好的理解,按照他最好的建议,你必须明白你在这里不是在处理Json,你可以直接做:


感谢@Neil Lunn,现在我对你的问题有了更好的理解,按照他最好的建议,你必须明白你在这里不是在处理Json,你可以直接做:


它不是JSON。它就像你的代码实际定义的一样。相反,你使用可用的方法访问属性,而不是从JSONObject`。它们是两个不同的东西。只需
obj.get(“tweets”)
。不需要JSON转换。它不是JSON。它与您的代码实际定义的一样。相反,您可以使用可用的方法访问属性,而不是从JSONObject`。它们是两件不同的事情。只需
obj.get(“tweets”)
。不需要JSON转换。它不是JSON。OP搞错了,而且做得不对。已经有一个访问器,因为
BasicDBObject
是一个抽象的
Map
。@NeilLunn-aah。我明白了,谢谢你澄清了这个问题,因为误解。谢谢你漂亮地打印了其中的数据。@NeilLunn当然没问题,我it’他正在试图理解背后的问题,如果你不知道这不是JSON,我会更新你的答案。OP是错误的,而且做得不对。已经有一个访问器,因为
BasicDBObject
是一个抽象的
Map
@NeilLunn aah.。我明白了,谢谢你澄清了这个问题,因为误解而产生了误导。谢谢你的公关埃蒂正在打印里面的数据。@NeilLunn当然没问题,我正试图理解背后的问题,如果你不介意的话,我会参考你更新答案