我想从这个json数据中提取“total”字段中的字段“2008”和“2009”。我试过,但它显示空指针异常..我不知道出了什么问题。下面是我试过的代码。
/*insertion of data*/
DB preDB = mongo.getDB("database");
DBCollection coll = preDB.getCollection("agrinindstry");
BasicDBObject doc1 = new BasicDBObject();
doc1.put("test", str);
coll.insert(doc1);
System.out.println(doc1);
/***retrieving data***/
DBCursor cursor = coll.find();
JSONArray mylist = new JSONArray();
String result = "";
while (cursor.hasNext())
{
result = cursor.next().get("2008").toString();
mylist.add(result);
System.out.println(mylist);
}
这是我的json数据
{"maindata":[
{
"title":"industry",
"2008":37,
"2009":44,
"2010":42
},
{
"title":"agriculture",
"2008":4,
"2009":0,
"2010":6
}
],
"total":{
"title:"sum",
"2008":41,
"2009":44,
"2010":48
}
}
答案 0 :(得分:0)
((DBObject)cursor.next().get("total")).get("2008").toString();
答案 1 :(得分:0)
您可以使用任何JAVA tootkit for JSON简化您的任务,请查看此example:
有关JSON以及如何解析它的更多信息,请查看:
如果您读取了JSONObject的#av(字符串)的javadoc,它实际上是HashMap.get(String),它表示
返回:指定键映射到的值,如果此映射不包含键的映射,则返回null
您的JSON不包含关键时间的映射。
编辑:
考虑这个来解析你的JSON数据:
{"schedule":{"service":{"type":"radio","key":"radio1","title":"BBC Radio 1",...
您首先需要将日程安排作为JSONObject,然后作为JSONObject服务,然后将标题作为普通字符串值。根据JSON值的类型以不同方式应用它。
答案 2 :(得分:0)
试试这个:
//get the data from mongoDB which documents has "total" key.
DBObject dbObject = new BasicDBObject().append("total", new BasicDBObject("$exists", true));
DBCursor cursor = collection.find(dbObject);
JSONArray mylist = new JSONArray();
String result = "";
while (cursor.hasNext())
{
result = ((DBObject)cursor.next().get("total")).get("2008").toString();
mylist.add(result);
System.out.println(mylist);
}