Java 从DBObject读取属性
我想将JSON数组放入java中的var中。我的JSON看起来不错,但当我尝试将JSON数组放入java数组变量时,它不起作用。 这里我得到的错误:errororg.json.JSONException:JSONObject[“tweets”]不是JSONArrayJava 从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
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当然没问题,我正试图理解背后的问题,如果你不介意的话,我会参考你更新答案